看完dojo-build tag 我发现人们在自定义构建时遇到了很多问题,所以我考虑过自己创建构建。但是我找不到构建 Dojo AMD 层时使用的语法的引用,即:
require({cache:{"custom/MyModule":function () {
define(["dojo/_base/lang"], function (lang) {
看起来cache是一个映射,其中模块名是key,value是function,body是我的模块文件内容。
但是我没有完全理解下面的部分:
}, "*now":function (r) {
r(["dojo/i18n!*preload*custom/nls/all*[\"en\",\"de\",\"ROOT\"]"]);
}}});
这个“*now”也是一个key,但是好像有特殊的解释。我的模块中需要它吗?还是可选的?
define("custom/all", [], 1);
是最后一部分。正如我所想,即使不会在任何地方直接引用层模块,也必须执行此定义?
最佳答案
经过一些逆向工程:
cache
对象包含就地定义的模块映射。模块名是键,值是调用define
的函数(所以是模块的内容)。
*now
是一个特殊的关键字,它绝对不是必需的,但一旦它存在,映射在该键下的函数将使用可用于调用附加 require< 的函数执行
,例如加载 NLS 文件。
方 block
"*now":function (r) {
console.log('*now is called with argument: '+r)
}
打印:
now is called with argument: function (a1, a2, a3) { return contextRequire(a1, a2, a3, module, result); }
函数 contextRequire
在 dojo.js
中定义。
关于javascript - 如何使用 require({缓存 :{ in dojo layers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944243/