Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用babel和webpack减少传输代码助手_Javascript_Angularjs_Webpack_Babeljs - Fatal编程技术网

Javascript 使用babel和webpack减少传输代码助手

Javascript 使用babel和webpack减少传输代码助手,javascript,angularjs,webpack,babeljs,Javascript,Angularjs,Webpack,Babeljs,在我的项目中,我使用转换到ES5。我习惯于把所有东西都捆在一起。babel在某些地方在任何给定文件的顶部添加函数以支持某些功能(如rest参数或import语句) 例如,几乎每个文件的顶部都有以下内容: var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; 有几个文件有这样的内容: var _toConsumableArray = functi

在我的项目中,我使用转换到ES5。我习惯于把所有东西都捆在一起。babel在某些地方在任何给定文件的顶部添加函数以支持某些功能(如rest参数或
import
语句)

例如,几乎每个文件的顶部都有以下内容:

var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
有几个文件有这样的内容:

var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };
var\u toConsumableArray=function(arr){if(Array.isArray(arr)){for(vari=0,arr2=Array(arr.length);i
在我看来,这并不是什么大问题,但在我的工作项目中,我也在做同样的事情,我相信我可以通过找到一种方法,将所有这些多边形填充放在一个地方,并让babel/webpack引用它们,从而将多个字节削掉。因此,与其在每个使用
导入的文件(几乎是每个文件)中都有
\u interprequire
,不如将其放在一个位置并被引用


有什么方法可以做到这一点吗?

不久前我也有同样的问题,文档中有明确的答案:


在webpack配置中,您可以像“babel?optional=runtime”一样执行此操作。

我不确定如何处理库或小项目。我想你不会从使用外援中得到任何好处。然而,对于我的应用程序,我发现在gzip之后,它实际上比包含helpers时要小

Babel有几个助手函数,如果需要的话,这些函数将放在生成代码的顶部,因此它不会在整个文件中多次内联。如果您有多个文件,尤其是将它们发送到浏览器时,这可能会成为一个问题gzip减轻了大部分这种担忧,但仍然不理想。

(增加重点)

这就是我的解决方案,我对此很满意。(基本上,不用担心)。

使用

由于这些帮助程序可能会很长,并且会添加到每个文件的顶部,因此您可以将它们移动到一个需要的“运行时”中

首先安装babel插件转换运行时和babel运行时:


太棒了,我想这正是我需要的。但是,当我这样做时,我的
dist
文件会因为所有
核心js
而变得臃肿。有没有办法将webpack配置为删除我自己的代码中没有使用的模块?而且,它不仅仅是
core
。它也是
助手。不确定,但可能这就是你想要的:(我个人没有尝试过,因为我使用的是core js,可能是大多数助手)我会研究一下,但这对我的
core
没有帮助:-(
$ npm install --save-dev babel-plugin-transform-runtime
$ npm install --save babel-runtime