我正在为其他人开发一组使用dojo 1.7的模块。所有模块都是AMD模块,并使用包中的相对路径。我的模块需要跨域加载,不要干扰或关心在使用模块的页面上运行的dojo版本(让我们假设有人正在使用。如果我正确理解文档,我可以通过执行指定包装重新映射像这样的东西:
var dojoConfig = {
packages: [
{
name: "myDojo",
location: "path/to/my/dojo",
packageMap: {
dojo: "myDojo",
dijit: "myDijit",
dojox: "myDojox"
}
},
{
name: "myDijit",
location: "path/to/my/dijit",
packageMap: {
dojo: "myDojo"
}
},
{
name: "myDojox",
location: "path/to/my/dojox",
packageMap: {
dojo: "myDojo",
dijit: "myDijit",
dojox: "myDojox"
}
},
{
name: "myPackage",
location: "path/to/my/package",
packageMap: {
dojo: "myDojo",
dijit: "myDijit",
dojox: "myDojox"
}
}
]
}
有没有办法将重新映射刻录到dojo构建中,以便使用我的包中的任何模块将自动使用我的dojo / dijit / dojox模块而不是本地版本的dojo中加载的模块?如果是这样,配置文件会是什么样子?如果可能的话,我希望消费者能够做到这样的事情:
<html>
<head>
<script src="some/differnt/version/of/dojo.js" type="text/javascript" data-dojo-config="config settings"></script>
<script type="text/javascript">
// For legacy syntax users:
dojo.registerModulePath("hisPackage", "http://somedomain.com/scripts/myPackage");
dojo.require("hisPackage.HisModule");
dojo.ready(function() {
// do stuff
});
// Or for AMD users:
require(["http://somedomain.com/scripts/myPackage/MyModule"], function(HisModule) {
// do stuff
}
</script>
</head>
<body></body>
</html>
提前感谢您的帮助。
答案 0 :(得分:0)
您是否在dojoConfig
中尝试了此操作var dojoConfig = { ...
packages: [
{name:'dojo',location:'//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo/'},
{name:'dijit',location:'//ajax.googleapis.com/ajax/libs/dojo/1.9.2/dijit/'},
'dojotut'
]
...
}