gpt4 book ai didi

javascript - RequireJS:模块函数是在每次导入模块时执行还是仅在第一次导入时执行?

转载 作者:行者123 更新时间:2023-12-03 23:56:48 27 4
gpt4 key购买 nike

我意识到我可以用一个简单的测试项目来回答自己(如果没有人立即插话,我可能会回答),但我在 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 的定义函数是否在每次我为另一个模块需要它时被调用(因此一个新的 Stuff 被实例化)或者它是否只被调用一次,并且它的输出被缓存?

显然这在某些用例中很重要,但在 require.js 文档或我见过的其他示例中并不清楚。

最佳答案

我自己测试了一下,看起来构造函数只运行了一次。

// stuff.js
define(function() {
return function() {
console.log('making new!');
};
});

// a.js
define( ['stuff'], function (Stuff) {
return { thing: new Stuff };
});

// b.js
define( ['a'], function(a) {
});

// c.js
define( ['a'], function(a) {
});

// app.js
define(['b', 'c'], function() {
console.log('app');
});

// index.html
<html>
<head>
<script src='requirejs/require.js' data-main='app.js'></script>
</head>
</html>

当我打开 index.html 时,控制台显示:

making new!                             stuff.js:3
app app.js:2

关于javascript - RequireJS:模块函数是在每次导入模块时执行还是仅在第一次导入时执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com