【问题标题】:Does import create a new copy of imported library?导入是否会创建导入库的新副本?
【发布时间】:2016-10-24 06:28:28
【问题描述】:

我正在使用 webpack + vue-loader 来创建 vuejs 应用程序。我有多个 .vue 组件文件。当我写这样的东西时:

import _ from 'lodash'

ComponentA.vueComponentB.vuescript 部分中,这会创建两个单独的lodash 副本还是只是导入引用?

【问题讨论】:

  • 如果标识符 lodash 从您使用它的两个位置指向同一个模块,那么是的,该模块只被实例化一次。

标签: javascript ecmascript-6 vue.js vue-loader


【解决方案1】:

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

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

[来源:ES6 Module Exports]

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

【讨论】:

  • 为了防止任何误解,使用require()也不会导致任何重复。同一模块的后续require 也被替换为对相同值的引用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多