You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// codeclassCircle{}// turn intofunction_classCallCheck(instance,Constructor){// this is a helper func}varCircle=functionCircle(){_classCallCheck(this,Circle);};// use @babel/plugin-transform-runtimevar_classCallCheck=require("@babel/runtime/helpers/classCallCheck");// helper from babel-runtimevarCircle=functionCircle(){_classCallCheck(this,Circle);};
babel 的整体流程
@babel/parser
parser ->AST
-> transformer[s] ->AST
->@babel/generator
-> output stringbabel 的核心库
@babel/parser
@babel/core
修改 ast,增删改
@babel/traverse
@babel/generator
babel 其他库
@babel/cli
@babel/types
@babel/polyfill
core-js 和 regenerator-runtime 的封装
用于模拟完整的 es2015+ 的环境(不包括第四阶段的提议)
在入口顶部引入
建议在应用中使用,而不是在库开发中使用
@babel/polyfill 是一个大而全的方案,除非是不考虑体积性能的项目,一般不建议使用。
可以使用 @babel/preset-env useBuildIn 来代替,或者从 core-js 中手动引入需要的 polyfill
babel 7.4 不建议使用了,直接用 core-js 和 regenerator-runtime
@babel/polyfill 里包含了什么?
了解下 core-js ?
了解 regenerator-runtime ?
@babel/runtime
包含 Babel modular runtime helpers 和
regenerator-runtime
作为 @babel/plugin-transform-runtime 的 runtime 依赖。
简单来说:
babel 会在源码中插入一些 helper 来解决兼容性问题
@babel/plugin-transform-runtime 能识别这些 helper,然后改成从 @babel/runtime 里引入的方式,来达到减少代码体积
将 babel 插入到源码中的一些 helper 提取到一个独立的模块中引入,以减少代码重复来减少 polyfill 的体积
同时还可以避免某些全局污染,例如:promise、set、map 等,@babel/runtime 会将他们重新命名,避免全局污染
具体做了什么?
@babel/runtime/regenerator
当您使用生成器/异步功能(可通过该regenerator
选项切换)时自动需要。corejs
选项切换)@babel/runtime/helpers
中引入对应模块(可通过该helpers
选项切换)。@babel/runtime-corejs-2 和 @babel/runtime-corejs-3 有什么不同?
@babel/register
实时编译,适用于开发阶段,多用在 node 应用,做实时编译
如何使用?
babel-node vs babel-cli
@babel/template
@babel/helpers
@babel/core-frame
babel preset
preset 是 plugin 的集合
@babel/preset-env
@babel/preset-react
@babel/preset-typescript
@babel/preset-flow
如何开发自己的 preset?
preset 的执行顺序?
兼容性怎么做?
测试
babel 的未来?
The text was updated successfully, but these errors were encountered: