duc*_*cin 3 javascript ecmascript-6 babeljs
为了设置webpack + babel +反应,我被告知要包含以下内容.babelrc:
"presets": ["latest", "stage-0", "react"]
Run Code Online (Sandbox Code Playgroud)
我想明白:为什么我应该使用babel预设,他们允许我做什么(除了babel本身)?这是一个问题.希望这不是基于意见的(就stackoverflow而言),它是关于babel如何工作的.
据我在文档中preset-latest读到,结合preset-es2015+ preset-es2016+ preset-es2017.据我所知,这些是即将推出的ES版本的正式接受功能,最新版本不仅仅是选择ES2015,而是一次性选择所有未来版本的简写.规格不会改变,所以它足够稳定,可以用于生产.
但如何stage-0,stage-1,stage-2,stage-3-他们代表仍在即将到来的ECMAScript版本的非官方提议或这是否代表别的功能?Babel docs对此并不清楚.那是第二个问题.
最后,插件和预设有什么区别?
...为什么我应该使用babel预设,他们允许我做什么...
Babel预设方便地定义了一组Babel插件,这样您就不必明确声明要"plugins"在你的.babelrc(或声明你的配置的任何地方)下使用它们.
看看es2016预设的源代码,你会看到我的意思......它只是导出一系列插件:https://github.com/babel/babel/blob/master/packages/babel-preset -es2016/SRC/index.js
......(除了巴贝尔本身)?
Babel本身就是其插件的接口.它利用兄弟程序,babylon一个分支acorn,为插件提供解析,检查,然后操作程序源代码的特定方式,以便根据您使用的插件添加所需的功能.
最后,插件和预设有什么区别?
如上所述,预设本身不包含功能,而是包含插件列表.这些通常代表一些相关的功能组.例如,stage-0预设将包含实现提案功能的所有插件,这些插件位于TC39(ECMAScript的"管理机构")定义的提交过程的第0阶段.
您可能已经注意到预设是JavaScript文件而不是JSON.这是因为预设定义的插件列表可以从配置中派生.看一下env预设,例如:https://github.com/babel/babel-preset-env/blob/master/src/index.js
但是,0阶段,第1阶段,第2阶段,第3阶段如何 - 它们是否代表了即将推出的ECMAScript版本仍然是非官方提案的功能,还是代表其他东西呢?
没有"官方"提案.任何人都可以提交提案.但是,如果官方的意思是该提案是否得到认真考虑,则由1)在此过程中处于什么阶段以及2)社区普遍考虑其作为新功能的价值.然而,你应该总是接受一些关于是否会被接受的提案,即使是在最后阶段,正如我们所经历的那样Object#observe,在最后一刻被删除了.
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |