在ES6的`import`语法中,一个模块是如何被准确地评估的?

17 浏览
0 Comments

在ES6的`import`语法中,一个模块是如何被准确地评估的?

假设我们有四个模块,ABCD

在模块A中:

console.log("A被评估")
function AClass {
  console.log("A构造函数")
}
var aObj = new AClass()
export default aObj;

在模块B中:

import aObj from A
export default "B"

在模块C中:

import aObj from A
export default "C"

在模块D中:

import b from B
import c from C
import aObj from A

那么当模块D被评估时,在控制台上会打印出多少次A被评估A构造函数

这种行为是否在ES6标准中有描述?如果我希望一个模块只被评估一次,不管被直接或间接地导入多少次,我应该怎么做?有人对此有什么想法吗?

0