【问题标题】:Why is there no multipleDefine error in a layer file?为什么图层文件中没有 multipleDefine 错误?
【发布时间】:2013-06-29 15:15:53
【问题描述】:

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

【问题讨论】:

    标签: javascript dojo amd js-amd


    【解决方案1】:

    如果您查看构建层文件的内容,您会发现它已被替换为对 require 的调用,以一次使用许多模块填充加载器的内部缓存,如下所示:

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

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

    1. 如果您尝试将它与 Dojo 加载程序以外的加载程序一起使用,它将无法工作,并且
    2. 您可以在一个文件中定义多个模块。

    顺便说一句,这个过程是您可以在模块内定义全局变量的原因,这些变量在构建前工作良好但在构建后中断(所有模块代码现在都在具有新词法范围的新函数中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多