I'我刚刚编译了一些dojo文件:如何在匿名包装器中调用函数
I've just compiled some dojo files together: How do I call a function inside the anonymous wrapper?
我今天第一次编译我的一些dojo东西。为了简单起见,在与这头野兽搏斗时,我把我所有的东西(除了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:
在我的主页视图中,我只需要调用入口点。以前它只是在窗口对象上,但现在不是了!如何从这个"cache:"对象中调用Create.js文件函数?
我试过:
require(["app/Activity/Create"], function (create) {
create.CreateActivityEntryPoint();
});
但create似乎是未定义的。
通常,在编译自定义层后,您访问函数的方式与以前相同——通过require
或define
获取对模块的引用并传递模块的标识符。(这就是层内代码继续工作的方式。)唯一的区别是,对于构建的层,你只想在层加载后才这样做(否则加载程序最终会对你实际上不希望它生成的单个模块发出请求,因为它应该通过层将它们一起加载)。
如果您的层对应于暴露您需要调用的函数的顶级入口点,则或您将层直接构建到dojo/dojo
中,以便在dojo.js加载时所有模块都可用(下面将详细解释),您不需要做任何特殊的操作-只需require([ 'app/myEntryPoint' ], function (entryPoint) { ... })
并在require回调中调用您需要调用。
否则,如果您的层与暴露您需要调用的函数的顶级入口点不对应,并且您编译了一个单独的层,而不是直接构建到dojo/dojo
中,那么在尝试与其他代码交互之前,您将需要确保您的层已加载,为了避免对实际在层中的单个模块的多余请求:
require([ 'app/layer' ], function () {
require([ 'app/moduleWithEntryPoint' ], function (moduleWithEntryPoint) {
moduleWithEntryPoint.entryPoint(...);
});
});
此响应的其余部分讨论了一些理想的构建概要文件配置。
通常,为了便于维护和使用,建议组织层的方法是围绕应用程序的顶级入口点模块创建一个层;理想情况下,这个入口点将可转换地包括应用程序的所有依赖项。例如,app/main
可能是您的切入点;它可能依赖于app/UI
,这是您的顶级应用程序小部件,它将依赖于其他小部件、存储等,并且依赖链将继续向下。
围绕顶层模块定义一个层非常简单,因为构建会自动包括层的模块ID引用的模块,并自动包括所有可传递的依赖项:
layers: {
'app/main': {}
}
不过,为了进一步减少请求,您可以将此层直接构建到dojo.js
:中
layers: {
'dojo/dojo': {
boot: true, // This layer includes the Dojo loader
customBase: true, // Override the default of including all of dojo/_base
include: [ 'app/main' ]
}
}
在这两种情况中,当您执行require([ 'app/main' ], function (app) { ... })
时,它最终将从require缓存中提取所有单独的依赖项,同时仍然向您提供main
模块的返回值,因此您可以访问用于初始化应用程序的任何函数。
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 将脚本包装在调用函数中
- 如何制作父/包装器组件“;触发器”;或调用子级上的方法
- jquery+调用来自另一个Javascript包装器的函数
- 在$.ajax调用中将附加数据添加到jQuery包装的对象数据中
- 用(function(){…}).call(this)包装文件,而用简单的()包装调用
- 如何将回调函数包装在其他回调函数中并从中调用
- 调用一个按钮点击,该按钮被包装在html页面内的另一个html标记中
- I'我刚刚编译了一些dojo文件:如何在匿名包装器中调用函数
- 我可以在这个例子中立即调用我的函数,而不是通过匿名函数包装它吗?
- 如何包装需要异步调用的复杂 if-then 语句
- 当花式盒子包装高度发生变化时,如何调用花式框调整大小函数
- 包装“控制台.log”并保留调用堆栈
- EmberJS actions - 当包装在“actions”中时,从另一个操作调用一个操作
- 如何在立即调用函数表达式(IIFE)中包装JavaScriptrails资产
- 为什么这个由Typescript生成的JavaScript构造函数包装了一个立即调用的函数
- 从jQueryAJAX内部调用包装器函数完成函数
- Nodejs:将整个脚本包装在函数调用中
- 检查是否调用了包装函数
- 如何在JSONP调用中用回调函数名包装响应