比方说,我们有四个模块A,B,C和D
在模块中A:
console.log("A evaluated")
function AClass {
console.log("A constructor")
}
var aObj = new AClass()
export default aObj;
Run Code Online (Sandbox Code Playgroud)
在模块中B:
import aObj from A
export default "B"
Run Code Online (Sandbox Code Playgroud)
在模块中C:
import aObj from A
export default "C"
Run Code Online (Sandbox Code Playgroud)
在模块中D:
import b from B
import c from C
import aObj from A
Run Code Online (Sandbox Code Playgroud)
因此,当模块D进行评估,多少次将A evaluated与A constructor被打印到控制台上?
这种行为是否在ES6标准中描述?如果我想要仅对一个模块进行评估,无论直接或间接导入多少次,我该怎么办?有没有人对此有任何想法?
下面的代码片段每次导入时都会生成新实例吗?
// 1st implementation
class ConnectionManager {
...
}
export default new ConnectionManager();
Run Code Online (Sandbox Code Playgroud)
// 2nd implementation
class ConnectionManager {
...
}
const connectionManager = new ConnectionManager();
export default connectionManager;
Run Code Online (Sandbox Code Playgroud)
如果是,如何在每次导入中获得相同的实例?