在阅读dojo-build标签后,我发现人们在定制构建时遇到了很多问题,所以我想到了自己创建构建。但是我无法找到构造Dojo AMD层时使用的语法参考,即:
require({cache:{"custom/MyModule":function () {
define(["dojo/_base/lang"], function (lang) {
看起来缓存是模块名称是键的映射,值是函数,其中body是我的模块文件内容。
但我不完全理解下半部分:
}, "*now":function (r) {
r(["dojo/i18n!*preload*custom/nls/all*[\"en\",\"de\",\"ROOT\"]"]);
}}});
这个“* now”也是一个关键,但它似乎有特殊的interprenation。我的模块中需要它吗?或者它是可选的?
define("custom/all", [], 1);
是最后一部分。正如我想的那样,即使不在任何地方直接引用图层模块,也必须进行此定义吗?
答案 0 :(得分: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
中定义。