Babel

作者: 小小美呀 | 来源:发表于2017-12-08 13:09 被阅读0次

Babel 把用最新标准编写的 JavaScript 代码向下编译成可以在今天随处可用的版本。 这一过程叫做“源码到源码”编译, 也被称为转换编译。

由于各大浏览器对 es6 并没有完全的支持,我们开发前端项目时,需要使用 babel 来将 ES6 编译成 ES5 ,插件和预设通常写入到配置文件中,可以将配置写入 package.jsonbabel 属性里,或者在根目录下写一个单独的 .babelrc 文件,这个文件就是用来让 Babel 做你要它做的事情。

配置 .babelrc 文件时一般配置如下:

{
    "presets": [
        "es2015",
        "react",
        "stage-0"
    ],
    "plugins": []
}

这个配置文件的意思。首先,这个配置文件是针对 babel6 的,babel6 做了一系列模块优化,不像 babel5 一样把所有的内容都加载,默认只提供 babel-core 。原本只需要装一个 babel ,现在必须按照自己的需求配置,灵活性提高的同时也提高了使用者的学习成本。

如果需要编译 ES6 ,我们需要设置 presets 包含 es2015 ,也就是预先加载 es6 编译的模块。

如果需要编译 jsx ,我们需要设置 presets 包含 react ,也就是预先加载 react 编译的模块。

如果需要编译 ES7 ,我们需要设置 presets 包含 stage-0 ,也就是预先加载 ES7 编译的模块。

stage不同阶段的区别:

ES7 不同阶段语法提案的转码规则模块(共有四个阶段),分别是 stage-0 stage-1 stage-2 stage-3

stage-0 的范围最广大,包含 stage-1 stage-2 以及 stage-3 的所有功能。同时还另外支持如下两个功能插件:

transform-do-expressions
transform-function-bind

stage-1 除了包含 stage-2stage-3,还包含了下面4个插件:

transform-class-constructor-call
transform-class-properties
transform-decorators
transform-export-extensions

stage-2 除了包含 stage-3 ,还包含了下面2个插件:

syntax-trailing-function-commas
transform-object-reset-spread

stage-3 包含了下面2个插件:

transform-async-to-generator
transform-exponentiation-operator

参考文档:
https://www.vanadis.cn/2017/03/18/babel-stage-x/
https://segmentfault.com/a/1190000008159877
http://www.ruanyifeng.com/blog/2016/01/babel.html

相关文章

网友评论

      本文标题:Babel

      本文链接:https://www.haomeiwen.com/subject/xyeemxtx.html