跳至主内容

@babel/runtime-corejs2

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

@babel/runtime-corejs2 是一个包含 Babel 模块化运行时辅助函数的库,同时还集成了 core-js 的版本 2。

安装

npm install --save @babel/runtime-corejs2

另请参阅:@babel/runtime

用法

该库需作为运行时 dependency 与 Babel 插件 @babel/plugin-transform-runtime 配合使用。具体用法请查阅该插件的文档。

为什么需要它

Babel 有时会在输出代码中注入重复的辅助代码,这些代码实际上可以被复用。

例如类转换(非松散模式):

JavaScript
class A {}

会转换为:

JavaScript
function _classCallCheck(instance, Constructor) {
//...
}

var Circle = function Circle() {
_classCallCheck(this, Circle);
};

这意味着每个包含类的文件都会重复生成 _classCallCheck 函数。

使用 @babel/plugin-transform-runtime 后,该函数引用会被替换为 @babel/runtime-corejs2 中的版本。

JavaScript
var _classCallCheck = require("@babel/runtime-corejs2/helpers/classCallCheck");

var Circle = function Circle() {
_classCallCheck(this, Circle);
};

@babel/runtime-corejs2 本质上是以模块化方式封装了这些函数的实现。

@babel/runtime 的区别

该库可替代 polyfill 处理所有非实例方法,会将 PromiseSymbol 等全局对象替换为 core-js 的库函数实现。

JavaScript
Promise;

会转换为:

JavaScript
var _Promise = require("@babel/runtime-corejs2/core-js/promise.js");

此转换机制同样适用于 Babel 的其他辅助函数。