欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Babel的快速入门教程

程序员文章站 2023-03-02 09:37:31
babel有什么用 ES6标准从ES2015制定开始已经有几个年头了,虽然各大浏览器最新版都在极力地实现标准,但并不是所有人都会用最新版本的浏览器,特别是天朝像某狗某游这样的二次...

babel有什么用

ES6标准从ES2015制定开始已经有几个年头了,虽然各大浏览器最新版都在极力地实现标准,但并不是所有人都会用最新版本的浏览器,特别是天朝像某狗某游这样的二次包装的浏览器,使用别人的内核而且版本更新又比较慢,导致新标准不能及时地在浏览器端使用。

Babel就是用来解决这个问题的:将ES6的代码转换成ES5的代码,从而在现有的环境中运行,让我们能用下一代JS编写前端代码。

// 箭头函数是ES6标准中制定的,大部分老版本浏览器都不支持
arr.map(item => item+1)

// babel转码后
arr.map(function(item){
  return item+1;
})

插件(plugins)与预设(presets)

babel6之后将默认的转换功能做成了可插拔的插件,默认不携带任何转换功能,如果没有指定插件,babel会原样输出,不会进行转换。

插件(plugins)只是单一的功能,例如:

es2015-arrow-functions es2015-classes es2015-for-of es2015-spread

Babel的快速入门教程

这么多插件一个一个地安装,明显很不合理,所以大部分情况下我们都是用presets(预设)

预设(presets)是一组插件,例如:

babel-preset-es2015(将ES2015语法编译成ES5) babel-preset-2016(将ES2016语法编译成ES2015) babel-preset-2017(将ES2017语法编译成ES2016) babel-preset-latest(最新标准,将2015,2016,2017的语法编译成ES5,包含上面三个预设) babel-preset-env(Babel7中新推出的预设,可根据你指定的环境自动确定您需要的Babel插件)

最新版babel中babel-preset-latest被弃用,推荐使用babel-preset-env

babel-preset-react(支持将React中的JSX转换成createElement的函数调用)

下面几个预设是TC39对ES的下一代提出的新功能的转换插件集合,这些功能还没有成为标准,有的功能甚至在将来会被移除,总之就是实验版预设(Experimental Presets)

preset-stage-3(五个插件) preset-stage-2(三个插件以及3预设的功能) preset-stage-1(两个插件以及2,3预设的功能) preset-stage-0(包括1,2,3预设的功能)

在webpack构建系统中使用babel

用个babel有这么麻烦吗?光插件和预设就有这么多名堂。

Babel的快速入门教程

注意:上面的In the browser是将babel转换工作放在浏览器端执行,转换工作会花费大量的时间,所以这种方式只适合开发环境(实际上开发环境我们基本也不用它),并不适用于生产环境。

我们实际开发大多使用构建系统帮我们做一些打包压缩的工作。

这里我以webpack为例介绍一下“如何在webpack中使用babel”

1. 安装babel

module: {
  rules: [
    { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
  ]
}

3. 创建.babelrc配置文件

根据需要安装预设,比如这里安装presets-env预设

{
  "presets": ["env"]
}