以下是代码
// When directly defining an AMD module in a browser, the module cannot be anonymous, it must have a name.
//If you are using the r.js optimizer you can define anonymous AMD modules and r.js will look after module names. This is designed to avoid conflicting module names.
// Define a module (export)
define('a', {
run: function(x, y){
return console.log(x + y);
}
});
define('a', {
run: function(x, y){
return console.log(x * y);
}
});
// Use the module (import)
require(['a'], function(a){
a.run(1, 2);
});
require(['a'], function(a){
a.run(4, 6);
});
以下是JsFiddle上的演示:http://jsfiddle.net/NssGv/162/
结果为4
和10
,而不是2
和24
。
对我来说意外的是,后来的define
无法覆盖之前的define
。这是正常行为吗?有没有人有这方面的想法?
答案 0 :(得分:1)
在重新定义之前,您必须取消定义模块:
define('a', {
run: function(x, y){
return console.log(x + y);
}
});
requirejs.undef('a');
define('a', {
run: function(x, y){
return console.log(x * y);
}
});
另请查看requirejs.undef的文档。