2012-02-17 53 views
2

我是新來的道場,所以我不太明白所有的Dojo的功能。這裏有一些問題,但我敢肯定,他們中的一些似乎很愚蠢,因爲我不完全得到如何道場目前還不結構:有關Dojo newb的Dojo模塊的問題?

  1. 你怎麼一個js文件中創建多個模塊和訪問它創建的文件中的模塊?另外,如何從包含多個模塊的文件訪問特定的模塊?

  2. 有什麼需要,並定義之間的區別?

  3. 我成功需要從文件的模塊,但我無法弄清楚如何獲得變量出來的文件,你怎麼辦呢?

  4. 我在研究Dojo如何需要它的模塊,並注意到它爲每個文件執行一個http請求,但是當處理大量模塊和/或在大型站點上時,這並不是非常低效,你真的想盡量減少必要的http請求數量?這是怎麼回事?

回答

1
  1. 如何在單個js文件中創建多個模塊?

    雖然這是可以做到的,由當它創建圖層文件生成系統來完成,所以不推薦。在一個文件中把多個模塊意味着你必須使用不同形式的定義給出一個明確的ID來eahc他們。這是不太靈活然後具有從所述文件名和路徑自動導出模塊ID(在此,具有相對路徑一起使得得多更容易移動和重命名AMD模塊,相比於舊式模塊)

  2. require和define有什麼區別?

    定義是一個強化版本的require,它定義了一個帶有返回值的新模塊。

  3. 我成功地從一個文件需要一個模塊,但我無法弄清楚如何從文件中獲取變量。

    我不知道WHA toyu這個意思(沒有給出一個具體的例子可運行),但所有你所要做的就是創建一個對象是你的模塊的價值和返回它定義。這是不是從你如何定義模塊的老辦法,具有手動「命名空間」

    //foo.js 
    define([], function(){ 
    
        var M = {}; //the exported stuff will go here 
    
        var myVariable = 16; //private function variables are private (like they are everywhere else) 
             //and cannot be seen from the outside 
    
        M.anumber = myvariable + 1; //things on the returned object can be seen from the outside 
    
        return M; //people who require this module will get this return value 
    }); 
    
    //bar.js 
    define(['foo'], function(foo){ 
        console.log(foo.anumber); 
    }); 
    
  4. 我一直在尋找如何在需要道場及其模塊和很離譜注意到它爲每個文件的http請求...

    正如phusick指出的那樣,構建系統可以用來將所有模塊綁定到單個文件中(爲您提供兩全其美的模塊化 - 開發期間的模塊化和部署期間的性能)。它也可以做其他很酷的東西,比如捆綁CSS並通過縮小器或Closure編譯器傳遞Javascript,檢查ifdef是否創建平臺依賴版本等。

4

通過The Dojo Loader的閱讀將提供答案。

基本上模塊=文件和非常頻繁(作爲最佳做法的問題)模塊=文件=類(經由dojo/_base/declare更精確地限定public類)。您需要使用The Dojo Build System,這將解決所有依賴關係,並將所有模塊放入單個文件(或更多文件,這取決於您的構建配置文件)。看看Dojo Boilerplate項目,它可以幫助構建應用程序。

+0

yes,module is file – Krishna 2013-09-17 07:27:35