在闭包中隐藏模块的原因是什么?
作为一个例子:在闭包中隐藏模块的原因是什么?
(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