发布于 2017-11-16 10:05:23
来自这篇文章的答复:
babel transform plugin与babel-polyfill / babel-runtime之间的区别在于您是否能够在今天的ES5中重新实现该特性。例如,Array.from可以用ES5重写,但是我无法用ES5编写任何东西来向JavaScript添加箭头函数语法。因此,箭头函数有一个转换,但对于Array.from没有转换。它必须由一个单独的填充,如babel-polyfill,或babel-runtime提供。
顺便提一下,这是我目前对巴别尔生态系统的理解。
Babel是一个javascript编译器:它解析,转换,输出转换后的代码。
巴别尔芯
babel-polyfill /babel-运行时
babel-polyfill和babel-runtime之间的区别:前者定义全局方法(并污染全局范围),而后者则转换代码以使在这个答案中解释具有相同的功能。babel插件
babel syntax / transform plugins:解析并转换es2015+语法(类似箭头函数)以将其转换为es5。babel-plugins-stage-x (从第0阶段到第4阶段):转换JS规范中还没有的未来javascript语法,从第0阶段(只是一个想法)到第4阶段(即将进入babel-plugins )。巴贝尔预设-env
babel-preset-env确定特定环境所需的Babel插件和多填充。target选项,它只加载在特定目标上运行所需的插件。builtIn选项,它只使用没有内置在目标中的babel-polyfill。babel-transform-runtime (截至11月)。2017)。(见本期)发布于 2017-11-13 11:32:34
巴贝尔预设-env是一个Babel预置,用于自动设置babel插件,并根据一组对照特征兼容性表检查的目标环境包括必要的巴贝尔填充物。
为了使完全工作的ES2015+环境在非is 2015+ client上运行,简单的代码转换有时是不够的:
Promise、Map、Object.assign.)是用babel-polyfill,提供的核js填充的所以,回到你的问题上,是babel-preset-env利用了babel-polyfill和babel插件。
https://stackoverflow.com/questions/47255455
复制相似问题