2014-10-28 58 views

回答

3

爲了避免污染全局命名空間,編譯這將產生像這樣的IIFE內/級聯包中所有的功能:如果你不封裝您的功能,然後你會污染全球範圍,它不好。 read this

(function() { 
    angular.module('app', []); 

    // MainCtrl.js 
    function MainCtrl() { 

    } 

    angular 
    .module('app') 
    .controller('MainCtrl', MainCtrl); 

    // AnotherCtrl.js 
    function AnotherCtrl() { 

    } 

    angular 
    .module('app') 
    .controller('AnotherCtrl', AnotherCtrl); 

    // and so on... 

})(); 
+0

那更清晰的例子!謝謝,@Narek! – 2014-10-28 06:42:55

0

將這些代碼封裝在匿名函數/閉包中是一種很好的做法,因爲當解析器解釋代碼時,它內部的所有代碼都會立即調用。 您可能不會使用它,它的工作原理也是一樣。但是,如果你像這樣封裝整個代碼,你就可以輕鬆地從一個腳本移動到另一個腳本。

0
+1

能夠從鏈接中提供更多信息或摘要,而非僅僅鏈接異地,這將非常棒。 – 2014-10-28 06:16:25

+1

除了它似乎沒有真正連接到角模塊案例 – 2014-10-28 06:18:47

1

一般來說,原因是爲了避免產生全局變量。

但是在你的例子中,如果你總是把代碼放在控制器函數中,就不需要了。

那麼有什麼意義?......除了遵循一個樣式模式,我沒有看到示例中的要點。

與其依靠手工做這些額外的東西,還有一些工具可以爲你做。從簡單的concat(比如grunt-contrib-concat或Yeoman的usemin)到更復雜的Browserify。 (Browserify用於翻譯nodejs代碼,但它可以很好地用AMD樣板包裝現有的瀏覽器代碼)。

相關問題