我可以导入 babel-polyfill 模块而不是全部导入吗?

Posted

技术标签:

【中文标题】我可以导入 babel-polyfill 模块而不是全部导入吗?【英文标题】:Can I import babel-polyfill modules rather than all in? 【发布时间】:2016-07-20 17:26:52 【问题描述】:

如何导入 babel-polyfill 的某些特定模块而不是全部导入?对我来说,它似乎太大了,无法全部导入,我只使用了它的一些功能。

我想要的如下:

import "babel-polyfill/symbol";

【问题讨论】:

【参考方案1】:

在底层,babel-polyfill 使用了一个名为core-js 的项目(当然还有一些自定义)。它公开了一个CommonJS API,因此假设您正在转译为 CommonJS(使用 preset-es2015 时的默认行为),您可以简单地使用它:

// This pollutes the global namespace. May conflict with
// any real Symbol implementations in the future
import "core-js/es6/symbol";
// Namespace-safe Symbol import
import symbol from "core-js/es6/symbol";

使用某种捆绑器(Browserify、Webpack 等)对这种方法很重要,因为 core-js 由 很多 个较小的模块组成,可能会导致很多不必要的 HTTP 请求。

【讨论】:

【参考方案2】:

如果不想导入整个 babel-polyfill 进行优化,可以直接导入 core-js。核心js可以

//import 'babel-polyfill';  

//Selective imports in modular pattern
import 'core-js/fn/object/assign';
import 'core-js/fn/promise';
import 'core-js/fn/string/includes';

【讨论】:

以上是关于我可以导入 babel-polyfill 模块而不是全部导入吗?的主要内容,如果未能解决你的问题,请参考以下文章

babel-polyfill的几种使用方式

导入内部测试而不是在模块的开头是不是更pythonic?

babel-polyfill

从 kivy 导入 pyjnius

babel-polyfill

在列表中找到相同数字的最大连续出现而不导入任何模块