2010-11-04 120 views
5
  1. 我想知道 之間有什麼區別 (優勢/劣勢)以下模式。
  2. 如何在模塊模式上創建基於 的子模塊?

我的目標是讓我的JS組織成多個文件懶加載,但有一個命名空間。的JavaScript模塊模式/組織/子模塊

例如:

SO.global(global.js) SO.global.registration(registration.js)< - 負載

VS.

var SO = (function() { 

    var CONSTANT = 'Z'; 

    function createX(){ 
     alert("create X"); 
    } 

    function getY(){ 
     alert("get Y"); 
    } 

    return { 
     create:createX, 
     get:getY 
    } 

}()); 
+2

有兩個例子之間沒有什麼區別....一個周圍有小括號,但他們SH的Module/Asynchronous Definition規範應該做同樣的事情。 – rob 2010-11-04 20:44:05

+0

第二個示例中的附加parens正被一些人用來指示立即調用函數表達式。 – 2010-11-04 21:05:00

+0

雖然我認爲那個公約在那個公約的錯誤位置。我相信它通常寫成(function(){...})() – Gopherkhan 2010-11-05 17:53:25

回答

5

你有沒有考慮Require.JS?它試圖提供以下解決方案:

  • 某種#包括/進口/需要
  • 加載嵌套的相關
  • 易用性開發,但隨後通過優化工具的支持,幫助部署
  • 能力

Require.JS實現由Common.JS定義

3

這裏有一個良好的閱讀:http://snook.ca/archives/javascript/no-love-for-module-pattern,另有:http://lamb.cc/blog/category/javascript/

YUI使用它如飢似渴,因爲這樣做我,我還沒有找到,我就被它限制任何情況下,它很好地與整合自定義模塊的YUI依賴加載器。

(對不起,我知道這是不是一個完整的答案,但有一些給你的篡改信息)

+0

這些鏈接剛剛在我的「技能待辦事項」管道上添加了幾個月。 – cherouvim 2010-11-04 21:11:07

+0

第一個鏈接很奇怪。這就像他在反對使用私有變量。 – david 2010-11-04 21:20:39

+0

@cherouvim,同意,我約... 70%通過腦部怪物的方式(無論如何) – danjah 2010-11-05 00:35:27