作爲一個例子:在閉包中隱藏模塊的原因是什麼?
(function() {
angular.module('Base', []).controller('BaseController', function($scope) {
$scope.mixin1 = function() {};
})
})();
什麼是在封裝angularjs
模塊點?我以爲默認是這樣的。
作爲一個例子:在閉包中隱藏模塊的原因是什麼?
(function() {
angular.module('Base', []).controller('BaseController', function($scope) {
$scope.mixin1 = function() {};
})
})();
什麼是在封裝angularjs
模塊點?我以爲默認是這樣的。
爲了避免污染全局命名空間,編譯這將產生像這樣的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...
})();
將這些代碼封裝在匿名函數/閉包中是一種很好的做法,因爲當解析器解釋代碼時,它內部的所有代碼都會立即調用。 您可能不會使用它,它的工作原理也是一樣。但是,如果你像這樣封裝整個代碼,你就可以輕鬆地從一個腳本移動到另一個腳本。
能夠從鏈接中提供更多信息或摘要,而非僅僅鏈接異地,這將非常棒。 – 2014-10-28 06:16:25
除了它似乎沒有真正連接到角模塊案例 – 2014-10-28 06:18:47
一般來說,原因是爲了避免產生全局變量。
但是在你的例子中,如果你總是把代碼放在控制器函數中,就不需要了。
那麼有什麼意義?......除了遵循一個樣式模式,我沒有看到示例中的要點。
與其依靠手工做這些額外的東西,還有一些工具可以爲你做。從簡單的concat(比如grunt-contrib-concat或Yeoman的usemin)到更復雜的Browserify。 (Browserify用於翻譯nodejs代碼,但它可以很好地用AMD樣板包裝現有的瀏覽器代碼)。
那更清晰的例子!謝謝,@Narek! – 2014-10-28 06:42:55