我意识到我可以用一个简单的测试项目来回答自己(如果没有人马上插话,我可以),但我在 SO 或谷歌上的任何地方都找不到答案,这似乎很关键:
如果我这样定义一个带有 require.js 的 AMD 模块:
//a.js
define( ['stuff'], function (Stuff) {
return { thing: new Stuff() };
}
然后我在其他两个不同的模块中使用它:
// b.js
define( ['a'], function(a) {
// do something with a's stuff
});
// c.js
define( ['a'], function(a) {
//do something else with a's stuff
}
每次我为另一个模块需要它时, 是否a
会调用 's 定义函数(因此是一个新的实例化),或者它是否只被调用一次,并且它的输出被缓存?Stuff
显然,这在某些用例中至关重要,但从 require.js 文档或我见过的其他示例中并不清楚。