导入库会创建一个新的副本吗?

8
我正在使用webpack + vue-loader创建vuejs应用程序。我有多个组件的.vue文件。当我像这样写东西时: 在ComponentA.vue和ComponentB.vue的script部分中,这是否会创建两个单独的lodash副本,还是只是导入一个引用?

1
如果标识符 lodash 在你使用它的两个位置指向同一个模块,那么该模块只会被实例化一次。 - Bergi
1个回答

13

导入 ES6 模块的任何部分(默认或命名导出)都会产生一个不可变绑定

CommonJS 模块导出值,而ES6 模块导出不可变绑定。本文解释了这意味着什么。

[来源:ES6 Module Exports]

所以答案是否定的,它不会创建导出的副本。模块初始化一次,每个导入都将接收到对同一值的引用。


4
为了避免任何误解,使用require()也不会导致重复。对于同一模块的后续 require,也将被替换为对相同值的引用。 - Linus Borg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接