gpt4 book ai didi

javascript - 我刚刚将一些dojo文件编译在一起: How do I call a function inside the anonymous wrapper?

转载 作者:行者123 更新时间:2023-12-02 16:30:35 24 4
gpt4 key购买 nike

我今天第一次编译一些我的道场资料。为了简单起见,在与这头野兽战斗时,我将我拥有的所有内容(除了 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:

在我的主页 View 中,我只需要调用入口点。以前它只是在窗口对象上,但现在不再了!如何从此“cache:”对象中调用 Create.js 文件函数?

我已经尝试过:

require(["app/Activity/Create"], function (create) {
create.CreateActivityEntryPoint();
});

但 create 似乎未定义。

最佳答案

通常,在编译自定义层后,您可以像以前一样以相同的方式访问函数 - 通过 requiredefine 获取对模块的引用并传递模块的标识符。 (这就是层内的代码继续工作的方式。)唯一的区别是,对于构建的层,您只想在层加载后执行此操作(否则加载器最终将向您请求的各个模块发出请求)实际上并不希望它执行,因为它应该通过层将它们全部加载在一起)。

如果您的层对应于公开您需要调用的函数的顶级入口点,或者您可以将层直接构建到 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 模块的返回值,以便您可以访问用于初始化应用程序的任何函数。

关于javascript - 我刚刚将一些dojo文件编译在一起: How do I call a function inside the anonymous wrapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com