按照惯例,当我们编写ES6模块时,我们将源代码放在my_project/my_models/serializers.pyc in __init__(self, documents, many, my_arg)
---> 25 super(Schema, self).__init__(documents, many=many)
my_virtualenv/lib/python2.7/site-packages/marshmallow/schema.pyc in __init__(self, obj, extra, only, exclude, prefix, strict, many, skip_missing, context)
--> 273 self._update_fields(self.obj, many=many)
my_virtualenv/lib/python2.7/site-packages/marshmallow/schema.pyc in _update_fields(self, obj, many)
--> 636 ret = self.__filter_fields(field_names, obj, many=many)
my_virtualenv/lib/python2.7/site-packages/marshmallow/schema.pyc in __filter_fields(self, field_names, obj, many)
--> 683 attribute_type = type(obj_dict[key])
TypeError: list indices must be integers, not str
文件夹中,并使用src
和babel-loader
将其编译为webpack
或{{1 }}将代码设置为ES5,并将lib
条目设置为dist
文件夹,然后发布到npm。
一方面,用户可以在不使用webpack的情况下使用该模块,代码可以运行。另一方面,使用webpack时,ES5代码可能会缩短
main
时间,因为它已经是ES5代码。
我感到困惑的是第二点,当使用webpack时,dist
中的ES5代码会减少babel-loader
时间,以便我们可以加入webpack构建性能吗?
问题几乎是关于具有webpack构建性能的ES5 npm模块,虽然它是我们已经做过的惯例,但我只是想了解一些关于webpack构建性能的内容。谢谢!
答案 0 :(得分:1)
是的,通常公共包与已经转换的源一起分发。对于Webpack和babel-loader
,性能优势在于您可以按原样使用这些源,而无需使用babel-loader
处理它们,因此您通常会看到:
{
test: '\.js$',
loader: 'babel',
exclude: ['node_modules']
}
所以,我也对这段摘录感到困惑,特别是为什么人们想用Babel解析ES5代码,因为最终不会发生转换。
无论哪种方式,源代码总是由Webpack解析而不必解析,事先用babel-loader
转换它们可以提高性能。