我在一个小型Web应用程序的开头,已将其设置为使用JSPM和System.js进行模块加载。我有两个文件,app.js和util.js.在util.js中,我正在创建一个为我获取Handlebars模板的函数,并将它们缓存在Handlebars.templates中。实际的功能比这更多,但我们可以说它只是这样做
import Handlebars from 'handlebars';
export function getTemplate(){
Handlebars.templates = 'HELLO THERE';
}
然后,在app.js中,我这样做
import {getTemplate} from 'util.js'
import Handlebars from 'handlebars'
getTemplate();
console.info(Handlebars.templates) //"HELLO THERE"
为什么Handlebars.templates会持续存在?这是System.js的功能吗? Handlebars会做什么?
答案 0 :(得分:1)
ES6模块是单身人士。即使模块是由隔离文件导入的,它们也都引用同一个实例。这是预期的行为,因为导出和导入依赖于绑定而不是复制值。
由于您可能来自CommonJS背景,您可能会发现"What do ES6 modules export?"是对行为差异的一个很好的解释。