阅读了很多关于模块加载的内容后,我了解到,必须在单个 JavaScript 文件中定义一个模块。此规则在 dojo 层文件 ( http://download.dojotoolkit.org/release-1.9.0/dojo.js.uncompressed.js ) 中被破坏。我以为文件名是模块标识符的一部分,所以我不明白这个层文件中的模块是如何解析的,为什么没有“multipleDefine”错误;-)
问问题
448 次
1 回答
1
如果您查看构建的层文件的内容,您会发现它已被替换require
为一次使用许多模块填充加载器的内部缓存的调用,如下所示:
require({
cache: {
'module/A': function(){
// contents of module A
},
'module/B': function(){
// contents of module B
},
// etc
}
});
它不再是标准的 AMD 模块,这意味着:
- 如果您尝试将它与 Dojo 加载程序以外的加载程序一起使用,它将无法工作,并且
- 您可以在一个文件中定义多个模块。
顺便说一句,这个过程是您可以在模块内定义全局变量的原因,这些变量在构建前工作良好但在构建后中断(所有模块代码现在都在具有新词法范围的新函数中)。
于 2013-06-30T00:46:36.483 回答