javascript - 如何使用 require({缓存 :{ in dojo layers?

标签 javascript dojo amd 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); }

函数 contextRequiredojo.js 中定义。

关于javascript - 如何使用 require({缓存 :{ in dojo layers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944243/

相关文章:

javascript - create_row() 函数的问题

jQuery 源代码使用 Require.js,但最终文件没有?

javascript - 如何使Dojo/Require 的模块缓存失效?

javascript - 在 Dojo 的父元素内部创建元素

javascript - 通过requirejs加载sigmajs

javascript - 如何正确解决 require.js 中的循环依赖

javascript - 如何更改 Android 中的警报按钮字体

javascript - HTML5 Canvas : Reproduce a picture with getImageData and putImageData

javascript - Jquery 在鼠标悬停时添加类并延迟删除它

javascript - 如何删除输入字段中的空白空间并重新分配 trim 值