6

有没有办法可以将新包添加到 dojo 配置?我知道我可以这样做:加载 dojo.js 时添加包。

<script src='dojo_1.7.2/dojo/dojo.js' 
    data-dojo-config="async:true,isDebug:true,parseOnLoad:false,
      packages:[{name:'project1',location:'../../js/proj1'},
        {name:'common',location:'../../common'}]"></script>

我希望能够在运行时添加新包。

dojo.registerModulePath确实在 dojo1.6 之前完成了这项工作(我认为),但现在在 1.7 中已弃用

我正在使用道场 1.7.2。

谢谢。

4

2 回答 2

6

您可以在加载后通过使用配置对象调用 require 添加额外的包。

Eg:

require({
    packages: [
        {"name": "myLib", "location": "release/myLib"}
    ]
});

但是,根据文档 ( dojo/_base/config ),这将创建另一个 Dojo 实例。此外,这是1.8版代码;我认为它不适用于1.7

我认为有可能将一个额外的对象推送到dojoConfigrequire.rawConfig但加载器不会拾取这些对象。加载后似乎无法更改配置。

您可以将配置对象传递给要求,因此:

Eg.

dojoConfig.packages.push({"name": "myLib", "location": "release/myLib"});

require(dojoConfig, [...moduleIds...], function(...arguments...) {
});

这将适用于个人 require 但不会修改全局配置(因此在define()或对require()的后续调用中不起作用)。同样,我在这里使用1.8但我认为它适用于1.7

可能有另一种更简单的方法可以让其他人发现这项工作?

于 2012-11-14T19:03:49.527 回答
1

Stephen Simpson 的解决方案似乎不适用于 dojo v1.13。尽管basePath项目路径以/. 我在控制台中也遇到了错误。

但是文档还提到了paths对我有用的参数。在你的情况下:

require({paths:{"project1": "../../js/proj1", …}});

它可能对您有用,因为您使用的是相对路径,而我没有。

它曾经是dojo.registerModulePath("myModule", "/path/goes/here");

于 2018-09-26T09:43:33.297 回答