2012-07-21 13 views
1

我通过在http://dojotoolkit.org/documentation/tutorials/1.7/hello_dojo/demo/module.html的例子中工作,我已经创建了一个目录结构如下包装位置如何在Dojo中工作?

w:/djt2/index.html 
w:/djt2/js/mymodule.js (exact copy of http://dojotoolkit.org/documentation/tutorials/1.7/hello_dojo/demo/myModule.js) 

我然后设置Tinyweb Web服务器,以便将W服务本地主机:/ djt2

我VE改变index.html一点点,调整为将mymodule.jsjs子目录中(我已经删除过下面的评论):

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Tutorial: Hello Dojo!</title> 

    <script> 
     var dojoConfig = { 
      async: true, 
      packages: [{ 
       name: "djt2", 
       location: '/js'  /* Location #1 */ 
      }] 
     }; 
    </script> 
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js"></script> 
</head> 
<body> 
<h1 id="greeting">Hello</h1> 
<script> 
    require(["djt2/mymodule"], function(myModule){ /* Location #2 */ 
     myModule.setText("greeting", "Hello Dojo!"); 
     setTimeout(function(){ 
      myModule.restoreText("greeting"); 
     }, 3000); 
    }); 
</script> 
</body> 
</html> 

这工作,但我不能完全肯定我明白为什么...特别是,在位置#1,原来有location.pathname.replace(/\/[^/]+$/, '')其计算为空字符串,并使加载程序在CDN位置查找mymodule.js(我也尝试将位置设置为"/",但这使得它搜索http://mymodule.js/)。

在位置#2这是一个有点神秘,前缀应该是djt2/ ...

如果有人能解释它,或直接我的文档(我有点不知所措学习的新框架:-)。

回答

3

在你的结构

w:/djt2/js/djt2/mymodule.js 

设置的baseUrl在配置上添加一个额外的djt2目录。

var dojoConfig = { 
    async: true, 
    baseUrl: '/js' 
    packages: [{ 
     name: "djt2", 
     location: 'djt2' 
    }] 
}; 

设置baseUrl会告诉dojo在哪里寻找自定义模块。作为包的一部分的位置是相对于baseUrl的。


我一直认为modules/packages是namesapces。要扩展您的示例与一个额外的包,它将看起来像下面:

w:/djt2/js/another/anotherModule.js 

var dojoConfig = { 
    async: true, 
    baseUrl: '/js' 
    packages: [{ 
     name: "djt2", 
     location: 'djt2' 
    }, { 
     name: "another", 
     location: 'another' 
    }] 
}; 
+0

嗯..没有工作。它尝试从'http:// localhost/djt2/js/djt2/mymodule.js'获取mymodule.js,但由于我是从'w:/ djt2'服务的,因此根目录没有'djt2'文件夹。如果我将baseUrl改为“/ js”,它就可以工作。如果我将baseUrl更改为'“/ js/djt2”'并删除软件包定义,它也可以工作... – thebjorn 2012-07-22 13:46:14

+0

我错过了localhost映射到djt2的部分。是的,baseUrl应该是/ js。 Dojo会寻找以/ js – 2012-07-22 14:37:51

+0

之后的djt2目录中的djt2开头的模块定义/我想知道当需要dijit或dojox时会发生什么,驻留在google cdn中的会发生什么 – mschr 2012-07-23 20:21:57

相关问题