标准巴别塔预设要求
standard babel presets requirements
为了设置webpack + babel + react,我被告知在.babelrc
中包含以下内容:
"presets": ["latest", "stage-0", "react"]
我想理解:为什么我应该使用babel预设,它们允许我做什么(除了babel本身)?这是一个问题。希望这不是基于意见的(就stackoverflow而言),这是关于babel是如何工作的。
就我在文档中读到的,preset-latest
结合了preset-es2015
+ preset-es2016
+ preset-es2017
。据我所知,这些都是即将到来的ES版本的官方认可的特性,而"最新"是指不仅选择ES2015,而且一次选择所有未来的版本。规格不会改变,所以它足够稳定,可以在生产中使用。
但是stage-0
, stage-1
, stage-2
, stage-3
呢?它们代表的是即将到来的ECMAScript版本的非官方建议还是代表着别的什么?Babel文档对此并不清楚。这是第二个问题。
最后,插件和预设有什么区别?
…为什么我要使用babel预设,它们允许我做什么…
一个Babel预设方便地定义了一组Babel插件,这样你就不必显式地声明你想在.babelrc
(或任何你声明你的配置)的"plugins"
下使用它们。
看看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
上所经历的那样,它在最后一刻被放弃了。
我也不明白为什么"modules": false
和为什么有一个"env"设置,为什么env
有自己的预设配置。
最后,我找到了这篇文章。babelrc里有什么?解释得很好,例如
其次,我们将模块设置为false,以确保import语句是正确的保持原样(而不是将它们编译为require)。我们在做这个让Webpack能够静态地分析我们要生成的代码更高效的包。
最后,我们有一个特定于Jest环境的覆盖,我们的测试选择框架。因为Jest是在节点中运行的,所以我们需要进行编译我们的导入需要,目标是我们所在的任何节点运行时当前在。
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 如何允许web浏览器记住未以标准方式发送的表单字段
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- 命名约定的Web标准
- 用于编码标准的javascript工具
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- LokiJS与标准Javascript对象访问
- backbone.js-映射标准url参数-使用多个参数
- 如何将日期转换为标准格式
- 为什么新js Fetch标准禁止响应头名称为'设置Cookie 1/2'
- 阻止用户在Netsuite中使用标准/未自定义的表单
- 获取非标准模式中的子字符串
- highcharts:更改工具提示和阴影(悬停)的标准位置
- Google Maps Javascript v3 自定义控件子类化标准控件
- 如何使用 JavaScript 或 PHP 将 IE 11 企业模式设置为标准模式
- Google Apps Script中的标准Javascript
- 扩展 JavaScript 标准类型陷阱
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 使用 requireJS 加载标准 JavaScript 文件
- 在旧标准中使用未来的保留关键字