3

阅读标签后,我发现人们在自定义构建时遇到了许多问题,因此我考虑自己创建构建。但是我无法找到构建 Dojo AMD 层时使用的语法的参考,即:

require({cache:{"custom/MyModule":function () {
    define(["dojo/_base/lang"], function (lang) {

看起来缓存是一个映射,其中模块名称是键,值是函数,主体是我的模块文件内容。

但我不完全理解下半部分:

}, "*now":function (r) {
    r(["dojo/i18n!*preload*custom/nls/all*[\"en\",\"de\",\"ROOT\"]"]);
}}});

这个“*now”也是一个key,但似乎有特殊的解释。我的模块中需要它吗?或者它是可选的?

define("custom/all", [], 1);

是最后一部分。正如我想的那样,即使在任何地方都不会直接引用 layer 模块,也必须进行此定义?

4

1 回答 1

2

经过一些逆向工程:

cache对象包含就地定义的模块图。模块名称是键,值是调用的函数define(所以它是模块的内容)。

*now是一个特殊的关键字,它绝对不是必需的,但是一旦它存在,映射在该键下的函数将使用可用于调用附加的函数执行require,例如加载 NLS 文件。

  "*now":function (r) {
     console.log('*now is called with argument: '+r)
  } 

印刷:

现在使用参数调用: function (a1, a2, a3) { return contextRequire(a1, a2, a3, module, result); }

函数contextRequire定义在dojo.js.

于 2013-08-26T08:28:42.130 回答