有没有办法可以为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
我正在使用dojo 1.7.2。
感谢。
答案 0 :(得分:5)
您可以在加载后通过使用config对象调用require来添加额外的包。
Eg:
require({
packages: [
{"name": "myLib", "location": "release/myLib"}
]
});
然而,根据文档(dojo/_base/config),这将创建另一个Dojo实例。此外,这是版本 1.8 代码;我不认为它适用于 1.7 。
我认为可以将额外的对象推送到 dojoConfig 或 require.rawConfig ,但这些不会被加载器拾取。加载后似乎无法更改配置。
您可以将配置对象传递给require,所以:
Eg.
dojoConfig.packages.push({"name": "myLib", "location": "release/myLib"});
require(dojoConfig, [...moduleIds...], function(...arguments...) {
});
这适用于个人需求,但不会修改全局配置(因此无法在 define()或后续调用 require()时使用。我再次使用 1.8 ,但我认为它适用于 1.7 。
可能还有另一种更简单的方法可以让其他人找到这项工作吗?
答案 1 :(得分:0)
Stephen Simpson的解决方案似乎不适用于dojo v1.13。它忽略了给定的位置,尽管项目路径以basePath
开头,但它仍在尝试相对于默认/
加载文件。我的控制台也出现了错误。
但是the documentation也提到了对我有用的paths
参数。就您而言:
require({paths:{"project1": "../../js/proj1", …}});
它可能对您有用,因为您使用的是相对路径,而我没有。
它曾经是dojo.registerModulePath("myModule", "/path/goes/here");
。