2012-07-21 40 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