首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo向AMD提供更新遗留系统

Dojo向AMD提供更新遗留系统
EN

Stack Overflow用户
提问于 2013-10-24 17:46:23
回答 1查看 88关注 0票数 0

这是对问题的跟进。

所以我有一个前AMD dojo代码:

代码语言:javascript
复制
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,在阅读了和前面的链接之后,我正在尝试这样的方法

代码语言:javascript
复制
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对应值是什么?

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 18:35:39

好吧,下面是我对你想要做的事情的假设:

  1. 您实际上不需要一个名为some的全局变量,它带有一个属性var,这只是一种组织东西的方法
  2. 您需要三个模块,some/var/iablesome/var/iable2blah。这意味着三个文件和三个define()调用
  3. som.var.iablesom.var.iable2都不是真正的可继承类,它们只是普通的旧对象.所以只有blah需要使用declare()

因此,您应该创建一个文件som/var/iable.js,它提供了一个普通的对象:

代码语言:javascript
复制
define([
],
function(){
    return {A:1,B,2}
});

另一个名为som/var/iable2.js,它是一个提供普通对象的模块:

代码语言:javascript
复制
define([
    "som/var/iable",
],
function(iable){
    return {C: 3, D:iable.B}
});

然后是提供类对象的第三个模块blah.js

代码语言:javascript
复制
define([
    "dojo/_base/declare",
    "som/var/iable2"
],
function(declare,iable2){
    var parentClasses = [];
    var clazz =  declare(parentClasses, {
        constructor : function(){
            // No need for this.inherited(arguments) in this particular case          
            alert("Welcome to the constructor. Did you know that iable2.D is "+iable2.D+"?");   
        },

    });
    return clazz;
});

我还没有对所有这些进行测试,但是为了让它在您最终想要放置的页面中开始:

代码语言:javascript
复制
require(["blah",dojo/domReady!"], function(blah){
    var b = new blah();
});

Dojo应该负责按顺序加载所有的东西,这样您就可以得到这样一个警告:

欢迎来到构造函数。你知道i2.D是2吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19572917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档