阅读很多关于模块加载的内容,我了解到,必须在单个JavaScript文件中定义模块。 此规则在dojo层文件(http://download.dojotoolkit.org/release-1.9.0/dojo.js.uncompressed.js)中被破坏。 我认为文件名是模块标识符的一部分,所以我不明白如何在这个图层文件中解析模块以及为什么没有“multipleDefine”错误; - )
答案 0 :(得分:1)
如果你看一下构建的图层文件的内容,你会看到它已经被require
的调用所取代,一次用许多模块填充加载器的内部缓存,看起来像这样: / p>
require({
cache: {
'module/A': function(){
// contents of module A
},
'module/B': function(){
// contents of module B
},
// etc
}
});
它不再是标准的AMD模块,这意味着:
顺便提一下,这个过程就是为什么你可以在一个模块中定义全局变量的原因,这个模块在构建之前可以正常工作但在构建之后就会中断(所有模块代码现在都在一个带有新词法范围的新函数中)。 / p>