在运行时将包添加到 dojo 配置
Posted
技术标签:
【中文标题】在运行时将包添加到 dojo 配置【英文标题】:Adding a package to dojo config at runtime 【发布时间】:2012-11-14 16:07:41 【问题描述】:有没有办法可以将新包添加到 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。
谢谢。
【问题讨论】:
【参考方案1】:您可以在加载后通过配置对象调用 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...)
);
这将适用于单个 require,但不会修改全局配置(因此在 define() 或对 require() 的后续调用中不起作用)。同样,我在这里使用 1.8,但我认为它适用于 1.7。
可能有另一种更简单的方法可以使其他人发现这项工作?
【讨论】:
谢谢斯蒂芬! dojoConfig.packages.push("name": "myLib", "location": "release/myLib");为我工作。【参考方案2】:Stephen Simpson 的解决方案似乎不适用于 dojo v1.13。它忽略了给定的位置,并且仍在尝试加载相对于默认 basePath
的文件,尽管项目路径以 /
开头。我在控制台中也遇到了错误。
但是the documentation 也提到了对我有用的paths
参数。在你的情况下:
require(paths:"project1": "../../js/proj1", …);
它可能对你有用,因为你使用的是相对路径,而我没有。
以前是dojo.registerModulePath("myModule", "/path/goes/here");
。
【讨论】:
以上是关于在运行时将包添加到 dojo 配置的主要内容,如果未能解决你的问题,请参考以下文章
在运行时将带有绑定的控件添加到 Xamarin ListView?