Babel
目录
Babel,下一代javascript编译器,当前版本 v2.4.0
,它可以处理ES6的所有新语法,并内置了React JSX扩展及Flow类型注解支持,如果对Flow不是很了解可以查看FED实验室微信公众号文章煦涵说Flow。
Babel与JavaScript技术委员会(TC39)始终保持着高度一致,能够在ECMAScript新特性标准化之前为开发者提供现实可用的转码编译实现,以在ECMAScript规范最后定稿前获得来自世界各地开发者更多的反馈,从而间接推动了javascript的发展以及开发者在项目中尝试使用新技术。因此建议大家开始使用 Babel。
Babel 配置文件 .babelrc
学习和使用Babel的第一步,配置 .babelrc
文件,该文件存放到项目根目录下,用来设置 Babel 的转码规则和插件。基本格式如下:
1 | { |
presets的规则集如下:
1 | # replaces es2015, es2016, es2017, latest |
plugins插件集合很多。
新建一个配置文件 .babelrc
,并增加如下代码,以供我们下面调试使用:
1 | # 新建配置文件.babelrc,并添加如下内容 |
安装和使用 Babel
ps: 本文将使用Yarn来安装依赖相关npm包,如果不了解Yarn的欢迎阅读公众号专栏煦涵说Yarn。
命令行方式运行 babel-cli
babel-cli
的 CLI 是一种在命令行下使用 Babel 编译文件的简单方法。
全局安装
1 | # 全局安装 |
新建一个source.js文件,内容如下:
1 | var arr = [1, 2, 3, 4]; |
1 | # 输出结果到控制台 |
项目内安装(局部安装)
1 | # 初始化一个项目package.json |
修改package.json,添加如下文本
1 | { |
运行
1 | $ yarn run build |
require方式运行 babel-register
ps: 这种方法并不适合正式产品环境使用。 在部署到生成环境之前预先编译会更好。 不过用在构建脚本或是其他本地运行的脚本中是非常合适的。
1 | $ yarn add babel-register --dev |
新建compile.js文件
1 | require('babel-register'); |
运行
1 | node compile.js |
运行结果
1 | $ [0, 2, 6, 12] |
编程方式运行 babel-core
1 | $ yarn add babel-core --dev |
字符串形式的 JavaScript 代码可以直接使用 babel.transform
来编译。
1 | babel.transform("code();", options); |
如果是文件的话,可以使用异步 api:
1 | babel.transformFile("filename.js", options, function(err, result) { |
或者是同步 api:
1 | babel.transformFileSync("filename.js", options); |
要是已经有一个 Babel AST(抽象语法树)了就可以直接从 AST 进行转换。
1 | babel.transformFromAst(ast, code, options); |
更多选项 options.
Babel 与 Webpack
使用 babel-loader 插件
1 | $ yarn add bable-loader --dev |
webpack.config.js 配置文件增加如下规则:
1 | { |
Babel 低版本浏览器兼容
- 煦涵说webpack-IE低版本兼容指南,或者FED实验室公众号文章
- React - IE低版本兼容
转载申请
本作品采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,文章内图片请保留全部内容。