【发布时间】:2015-02-05 05:10:27
【问题描述】:
我今天是第一次编译我的一些道场资料。为简单起见,我在与这头野兽搏斗时将所有内容(dojo.js 除外)编译到一个名为 all.js 的文件中。
但在 all.js 中,我有一个入口点,它完全密封在我需要调用的这个匿名函数中,但我不太清楚如何获得它。
这是文件的开头:
require({cache:{
'dojo/dom-geometry':function(){
define(["./sniff", "./_base/window","./dom", "./dom-style"],
function(has, win, dom, style){
// module:
// dojo/dom-geometry
// the result object
var geom = {
// summary:
// This module defines the core dojo DOM geometry API.
};
//dom-geometry continues on for awhile....
还有我感兴趣的部分,在第 14798 行!如何调用 CreateActivityEntryPoint?
//end of previous part
return singleton;
});
},
'app/Activity/Create':function(){
function CreateActivityEntryPoint()
{
//do things here.
}
下面是后面的部分:
}, //closing bracket of Activity/Create anon function
'dojo/dom-attr':function(){
define(["exports", "./sniff", "./_base/lang", "./dom", "./dom-style", "./dom-prop"],
function(exports, has, lang, dom, style, prop){
// module:
在我的主页视图中,我只需要调用入口点。以前它只是在窗口对象上,但现在不是了!如何从这个“缓存:”对象中调用 Create.js 文件函数?
我试过了:
require(["app/Activity/Create"], function (create) {
create.CreateActivityEntryPoint();
});
但 create 似乎是未定义的。
【问题讨论】:
-
看来我需要正确定义我的代码模块,以便它们可以相互调用。我想明天的工作就是解决这个问题。
-
我认为您需要
define模块而不是require。您需要将您的require({cache:{.....替换为define({cache:{.....。 require 用于要求模块,而 define 用于定义模块。 define 返回一个具有一组属性和方法的模块,可以调用这些属性和方法与模块进行交互。 -
你能告诉我们
app/Activity/Create的源代码之前构建过程。它应该包含一个define调用。 -
我认为你是对的。我真的很高兴在我的 javascript 变得太大之前尝试编译它。
-
@frank,永远不需要直接修改构建层模块。
require({cache: ... })调用是一种机制,层可以通过该机制直接填充 AMD 加载程序的缓存,关键是可以一次填充多个模块,以便稍后通过require或define引用它们的模块 ID 将加载它们来自加载器的缓存,而不是实际生成服务器请求并尝试单独加载每个文件。
标签: javascript dojo dojo-build