这是this问题的后续问题。
所以我有这个AMD前dojo代码:
dojo.require(...);
dojo.provide("abc.def.foo");
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
dojo.declare("blah",[],{
//code based on the above variables
});
对于AMD,在阅读this和之前的链接后,我正在尝试这样的事情
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
define([
"dojo/_base/declare",
], function(declare){
return declare("abc.def.foo", null {
});
});
define([
"dojo/_base/declare",
], function(declare){
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
return declare("blah", null {
//code based on the above variables
});
});
显然这失败了,因为没有像som.var.iable
那样的对象结构。我可以,但我的问题是它是如何在遗留代码中工作的?什么是正确的AMD等价物?
非常感谢任何帮助!
答案 0 :(得分:1)
好的,这是我对你要做的事情的假设:
some
,var
和some/var/iable
。这意味着三个文件和三个some/var/iable2
电话blah
和define()
都不是真正的可继承类,它们只是普通的旧对象...所以只有som.var.iable
需要使用som.var.iable2
因此,您应该创建一个文件blah
,它提供了一个普通对象:
declare()
另一个叫som/var/iable.js
,它是一个提供普通对象的模块:
define([
],
function(){
return {A:1,B,2}
});
然后是提供Class-object的第三个模块som/var/iable2.js
:
define([
"som/var/iable",
],
function(iable){
return {C: 3, D:iable.B}
});
我还没有对所有这些进行过测试,但是要在你最终想要放入的页面中开始:
blah.js
Dojo应该负责按顺序加载所有内容,以便您收到一条提示
的警告欢迎使用构造函数。你知道iable2.D是2吗?