commonjs是node.js中的模块机制,通过exports或者module.exports导出,require引入,那么这个commonjs2是个什么鬼?

其实这是因为commonjs中喜欢用exports或者module.exports导出导致的,我们先来看看这两者不同:

exports是module.exports的引用,module.exports是exports的具体实现,例如下面这样的关系:

虽让可能平常更喜欢用module.exports,但是人家commonjs规定了exports才是正统,module.exports最多只能算'小妾'。所以commonjs2是规定用module.exports输出的。

那么这有啥用呢?别说,还真有用,在webpack中有一个output.libraryTarget的配置,就涉及到commonjs和commonjs2。这个属性一般是写插件的人才会用到,目的是让插件支持何种引用方式(commonjs,AMD,ES6 module等)。例如:

如果libraryTarget为commonjs,同时要制定一个名字(library),然后就会生成exports['***']=....。外部用require就可以引用了。

如果配置成commonjs2的话,如下:

这种就不需要library指定名字了。

其他文章

0
我要评论

评论

返回
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

提交
还可以输入500个字