举个例子:
(function() {
angular.module('Base', []).controller('BaseController', function($scope) {
$scope.mixin1 = function() {};
})
})();
封装angularjs
模块有什么意义?我认为默认是这样。
答案 0 :(得分:4)
为了避免污染全局命名空间,在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...
})();
答案 1 :(得分:1)
一般来说,原因是避免创建全局变量。
但是在你的例子中,如果你总是将代码放在控制器函数中,则不需要。
那么重点是什么?......除了遵循样式模式之外,我没有在示例中看到这一点。
不是依靠手工做那些额外的东西,而是有一些工具可以帮到你。从一个简单的concat(如grunt-contrib-concat或Yeoman的usemin)到更复杂的一个,如Browserify。 (Browserify用于翻译nodejs代码,但它适用于使用AMD样板包装现有的浏览器代码)。
答案 2 :(得分:0)
将这些代码封装在匿名函数/闭包中是一种很好的做法,因为当解析器解释代码时,它内部的所有代码都会被立即调用。 你可能不会使用它,它会工作相同。但是,如果你像这样封装整个代码,你将能够轻松地将它从一个脚本移动到另一个脚本。
答案 3 :(得分:0)