我们计划将dojo 1.8与旧版本(1.2)一起使用。我们希望全局变量dojo指向1.2版本的dojo和dojo18指向1.8版本。我尝试使用dojoConfig的packages属性来实现它。
<script type="text/javascript" src="<some_path>/dojo-release-1.2.0/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
<script>
djConfig = {};
var dojoConfig = {
parseOnLoad: true,
async: true,
baseUrl: '<some_path>/dojo-release-1.8.3/dojo',
packages: [
{name: 'dojo18', location: '<some_path>/dojo-release-1.8.3/dojo',
packageMap: {
dojo: 'dojo18',
dijit: 'dijit18',
dojox: 'dojox18'
}
},
{name: 'dijit18', location: '<some_path>/dojo-release-1.8.3/dijit'},
{name: 'dojox18', location: '<some_path>/dojo-release-1.8.3/dojox'},
],
deps: ["dojo18", "dijit18", "dojox18"]
};
</script>
<script src="/cuic/scripts/dojo-release-1.8.3/dojo/dojo.js"></script>
然而这似乎不起作用 - 现在有两个全局变量--dojo和dojo18--两者都指向1.8版本的Dojo。
由于Dojo的编译版本的包的重定位不起作用,我想知道是否有任何构建属性暴露,通过执行dojo的自定义构建将dojo更改为dojo18,dijit到dijit18,dojox到dojox18。
答案 0 :(得分:0)
这是在黑暗中完全拍摄的......
<。> .8调用创建一个dojo实例..这是正常的...它会杀死你的旧道场。尝试在实例化之后立即将第1行中创建的dojo对象克隆到另一个变量。然后,在完成剩余的过程后,将1.8 dojo实例也克隆到另一个变量。
最后将新变量分别克隆回dojo和dojo18 ......
没有承诺,但是在你太深入之前你可以尝试一下,我也有兴趣看看它是否有效。如果它确实有效,你也应该能够为第一个实例使用djConfig,为第二个实例使用dojoConfig ......
抱歉......我在手机上,所以无法测试:) ...
后来..一个非常邋test的测试,但是这个有用......
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js"></script>
<script type="text/javascript" >var dojette = dojo;</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"></script>
<script type="text/javascript" >var dojo18 = dojo;</script>
<script type="text/javascript" >var dojo = dojette;
console.log(dojo.version);
console.log(dojo18.version);
</script>
如果你将dojo和dojo18作为完整的对象转储,你会发现它们已经完成了函数等。我没有进一步分离出模块命名空间等,所以我的其余代码仍然爆炸,但是这是一个开始...我希望它有所帮助...
答案 1 :(得分:0)
通过修改dojo / _base /内核代码的scopeMap变量,我得到了自定义构建来创建全局变量'dojo18','dijit18''dojox18'。
var scopeMap =
// a map from a name used in a legacy module to the (global variable name, object addressed by that name)
// always map dojo, dijit, and dojox
{
dojo:["dojo18", dojo],
dijit:["dijit18", dijit],
dojox:["dojox18", dojox]
},
此配置确保全局变量将命名为“dojo18”而不是“dojo”。 当通过dojoConfig变量提供时,scopeMap变量似乎在早期版本的dojo中受到尊重。但它似乎不适用于1.8.x版本。我想知道这是不再支持的。