运行require(['pages/home'])
只能运行一次,但如果我再次使用require(['pages/home'])
,则无法运行。
模块" pages / home"是一个名为" home.js"的文件。在名为" pages"。
main.js
require(['pages/home']);
信息页/ home.js
define('pages/home', function() {
console.log('running pages/home module');
});
答案 0 :(得分:4)
RequireJS模块是单身人士。它只加载一次模块一次。如果已经加载了模块,则再次加载模块时所获得的是对最初加载的模块的引用。传递给define
的工厂功能将不会再次运行。
所以你所看到的正是预期的结果。
答案 1 :(得分:0)
模块中的静态代码不应该被多次评估,就像通过普通<script>
标记加载的脚本在页面加载期间不会运行多次一样。 / p>
想象一下,如果一个模块包含如下代码:
define('my-module', function () {
var foo = foo || 0;
var bar = ++foo;
});
您应该bar
和foo
同时=== 1
,但如果模块重复运行且存在全局foo
,则情况可能并非如此。不可否认,这是一个非常人为的例子,但反复评估一个模块可能会导致严重的问题。
答案 2 :(得分:0)
让它返回一个可在需要后执行的函数/对象。
define('pages/home', function() {
return function(){
console.log('running pages/home module');
};
});
require(['pages/home'], function(resultFunc){
window.YourFunc = resultFunc;
});
现在您可以随时执行您的功能