@babel/polyfill 已经过时,目前被core-js和generator-runtime 所取代
除了预设可以转换代码以外,插件也可以转化代码,他们的顺序是:
- 插件是在 preset 前运行
- 插件的顺序是从前到后
- preset 顺序是从后道歉
通常情况下,@babel/preset-env 只转换那些已经形成正式标准的语法,对于某些早起阶段,还没有确定下来的语法不做转换
要转换这些语法,就要单独使用插件
下面随便列举一些插件
@babel/plugin-proposal-class-properties
该插件可以让你在类中书写初始化字段
class A{a=1;constructor(){this.b=3;}}
@babel/plugin-proposal-function-bind
该插件可以让你轻松为某个方法绑定this
function Print(){console.log(this.loginId);}const obj={loginId:"abc";}obj::Print(); //相当于:Print.call(obj);
遗憾的是:: 语法会在vscode里面报错,但是并不影响编译
@babel/plugin-proposal-optional-chaining
const obj={foo:{bar:{baz:42,}}}const baz=obj?.foo?.bar?.bar;const safe=obj?.qux?.baza;
允许在对象使用?判断符号,当属性有个属性的时候,会读取属性,而且在属性连读取的时候,如果其中一个链未读取到,既不会向后面进行读取了,不会在运行时报错
babel-plugin-transform-remove-console
该插件会移除源码中的控制台输出语句
console.log('foo');console.error("bar");
@babel/plugin-transform-runtime
这个库提供了一些公共的api,会自动抽离一下公共的api
