因此,如果我有一些模块,例如:
//test1.js
define([], function() {
var counter = 0;
return {
increment: function() { counter++ }
};
});
Requirejs 将加载此模块一次(以了解此模块的局部变量)并且永远不会再次加载?变量计数器将通过返回对象的关闭(通过增量函数)而活着?
下一个例子呢?
//test2.js
define([], function() {
var value = 10;
document.getElementById('asd').addEventListener('mousedown', function(e) {
value = Math.random();
});
return value;
});
使用这种代码结构,这个事件永远不会被触发,因为 requirejs 只会加载/执行一次?这里导出的值将是 10 并且不能更改?所以对于这个例子,我只有一个解决方案,那就是从这个模块返回一个函数(当我想要形象地说“多次执行这个模块”这样的效果时)?
那么这是正确的方法吗?
//test3.js
define([], function() {
return function() {
return Math.random();
};
});
//test4.js
define(['test3'], function(test) {
document.getElementById('asd').addEventListener('mousedown', function(e) {
alert(test());
});
});
随意张贴任何其他你觉得对 Requirejs 感兴趣的陷阱。