为什么图层文件中没有multipleDefine错误?

时间:2013-06-29 15:15:53

标签: javascript dojo amd js-amd

阅读很多关于模块加载的内容,我了解到,必须在单个JavaScript文件中定义模块。 此规则在dojo层文件(http://download.dojotoolkit.org/release-1.9.0/dojo.js.uncompressed.js)中被破坏。 我认为文件名是模块标识符的一部分,所以我不明白如何在这个图层文件中解析模块以及为什么没有“multipleDefine”错误; - )

1 个答案:

答案 0 :(得分:1)

如果你看一下构建的图层文件的内容,你会看到它已经被require的调用所取代,一次用许多模块填充加载器的内部缓存,看起来像这样: / p>

require({
  cache: {
    'module/A': function(){
      // contents of module A
    },
    'module/B': function(){
      // contents of module B
    },
    // etc
  }
});

它不再是标准的AMD模块,这意味着:

  1. 如果您尝试将其与Dojo加载程序以外的加载程序一起使用,并且
  2. ,它将无效
  3. 您可以在一个文件中定义多个模块。
  4. 顺便提一下,这个过程就是为什么你可以在一个模块中定义全局变量的原因,这个模块在构建之前可以正常工作但在构建之后就会中断(所有模块代码现在都在一个带有新词法范围的新函数中)。 / p>