使用System.js,为什么我对一个文件中的模块所做的更改会在另一个文件上持续存在
Using System.js, why do changes I make to a module in one file persist in another?
我正在开发一个小型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做什么?
ES6模块是单体。即使模块是由独立的文件导入的,但它们都引用了同一个实例。这是预期的行为,也是可能的,因为导出和导入依赖于绑定而不是复制值。
由于您可能来自CommonJS背景,您可能会发现"ES6模块导出什么?"是关于行为差异的一个很好的解释。
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- 如何定义一个模块并使用它来分离js文件
- 如何引用HTML中节点模块中的js文件
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 需要从一个文件中获取多个模块
- 是否可以从javascript文件中将量角器作为模块运行
- 文件结构:使用索引.js文件级联访问子模块或子文件
- ESDoc将我所有的模块方法放在一个标题下,而不是放在每个文件下,我该如何改变这种行为
- 如何在新创建的模块中从Odoo v8中的Javascript文件中调用python函数
- Nodejs模块文件和concat
- 访问模块.从外部文件导出
- require('file_path')后面的后缀(模块)在javascript文件中是什么意思
- 如何将多个 AMD 模块捆绑在一个文件中
- 需要来自单个JS文件的多个子模块与节点/组件.js
- 如何在RT上添加插件和使用一些外部模块/文件
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- Javascript、多文件模块和Require.Js
- 如何在其他JS文件/模块中调用/使用此模块
- 使用AMD在Typescript中引用一个文件(模块)