我想知道模块定义是如何工作的。举个例子更好。
如果一个接一个地定义了两个具有相同名称的模块,则第二个定义不会起作用:
define("somemodule", [], function () {return "foo";})
define("somemodule", [], function () {return "bar";})
require(["somemodule"], function (module) {console.log(module)})
它将返回:
> "foo"
但是如果我们在第一个定义之后调用模块,第二个模块将重新定义第一个模块:
define("somemodule", [], function () {return "foo";})
require(["somemodule"], function (module) {console.log(module)})
define("somemodule", [], function () {return "bar";})
require(["somemodule"], function (module) {console.log(module)})
返回:
> "foo"
> "bar"
为什么这样工作?事实上,我正在寻找防止模块重新定义的可能性。换句话说,我需要上面的代码来返回" foo"一直以来。
答案 0 :(得分:3)
我使用的是requirejs 2.0.6。这个问题没有在requirejs 2.1.15中重现。解决!