Babel 是什么?
Babel 是一个 JavaScript 编译器。
这是 Babel 官网(中文)上的一句介绍。实际上,Babel 可以将 ES6 代码转为 ES5 代码,让你不用去考虑环境是否支持,而直接使用 ES6 来编写代码。
使用 Babel
文件目录结构
|
|
配置 .babelrc
在文件根目录下创建 .babelrc 文件,这个文件用来设置转码规则和插件,
参考网上的 .babelrc 文件经常看到这样的配置:
这里解释一下,这个配置文件是针对 Babel 6 的。Babel 6 做了一系列模块化,不像 Babel 5 一样把所有的内容都加载。比如需要编译 ES6,我们需要设置 presets 为 “es2015”,也就是预先加载 ES6 编译的相关模块,如果需要编译 jsx 使用 react,则需要预先加载 “react” 这个模块。ES7 不同阶段语法提案的转码规则(共有4个阶段),分别是 “stage-0”、”stage-1”、”stage-2”、”stage-3”。
配置 package.json
初始时的文件内容:
关于输出路径的配置:
安装依赖
根据 .babelrc 文件的配置需要执行的命令行如下:
ES7 不同阶段语法提案的转码规则含义又都是什么呢?
- stage-0:
包含 stage-1,stage-2 以及 stage-3 的所有功能,同时还另外支持如下 2 个功能插件:transform-do-expressions、transform-function-bind - stage-1:
包含 stage-2 和 stage-3,还包含了下面 2 个插件:transform-class-constructor-call 和 transform-export-extensions - stage-2:
包含 stage-3,以及插件:syntax-dynamic-import、transform-class-properties、transform-decorators(–disabled pending proposal update (can use the legacy transform in the meantime)) - stage-3:
包含插件:transform-object-rest-spread、transform-async-generator-functions
安装完成后,package.json 文件内容为:
安装 Babel 的命令行工具依赖包 babel-cli
方法一:全局安装
方法二:在项目中安装
如果希望不同的项目安装不同版本的 Babel,可以选择方法二,在项目中安装,这样项目也不会对全局环境产生依赖。
运行
在 src 文件夹下新建 index.js 文件,写入测试代码:
运行 $ npm run build
可以看到文件目录下多了 lib 文件夹,打开后里面有 index.js 文件,内容为:
这就是转码后的 ES5 文件。
总结
以上只是最简单的实践小结,关于 Babel 还有很多依赖包可以研究,下次可以来总结一下这些包都有哪些用处。