当
D执行模块,控制台将打印此消息:
A evaluatedA constructor
这意味着该
A模块仅被评估一次,即使它被其他模块多次导入也是如此。
的评估规则
ES6 modules与
commonjs格式相同:
- 模块是加载后执行的一段代码。这意味着,如果主捆绑包中未包含某个模块,则不会对其进行评估
- 模块是单例。如果模块多次导入,则仅
instance
存在一个模块,并且在加载时仅对其进行一次评估
ECMAscript 6规范的HostResolveimportedModule部分介绍了
导入模块相同实例 的行为。 它提到:
如果此操作 (导入操作) 正常完成,则必须是幂等的。每次使用特定的referenceencingModule,说明符对 (从
导入_作为参数 )_ 调用它时,它必须返回相同的Module Record实例。
使用布尔标志在Moduleevaluation的第4点和第5点中描述了模块的 单次评估
的行为。 每个模块都有标志,可确保仅对模块代码进行一次评估。
evaluated
evaluated



