我是AngularJS的新手。有时我看到:
angular.module(...)....
有时候
var app = angular.module(...)...
有时后者被包裹在IIFE中。
什么时候使用前两个中的任何一个?他们有什么真正的区别?
答案 0 :(得分:3)
大多数关于角度的样式指南推荐第一个变体,因为您从未真正需要定义变量来引用模块
您可以像angular.module('moduleName')
一样访问模块:
angular
.module('app')
.controller('SomeController' , SomeController);
function SomeController() { }
答案 1 :(得分:1)
第一种方法:带
var app = angular.module(...)...
您正在保存对返回的模块实例的引用,并重复使用它来注册多个服务/配置/提供程序等
所以你会像这样调用方法
app.config();
app.controller();
等
第二种方法:有了这个
angular.module(...)
你链接方法有点,因为angular.module(...),控制器,提供程序返回可以链接的模块实例
喜欢
angular.module("sm",[]).config(function(){}).controller()... so on
比较/缺点/优势:
第一种方法的缺点是我们声明一个“app”中间变量,如果我们不使用IIFE,它们可能会在全局命名空间中结束
(function() {
var app = angular.module(...)...
} )()
所以我们可以对每个控制器/工厂等使用angular.module(“...”)但这可能是重复的大部分
幸运的是,我们可以使用第二个approcach进行链接,因为angular.module(...),contollers,provider返回模块实例答案 2 :(得分:1)
你编写项目的风格没有区别。
请考虑以下示例,演示您提到的两种情况:
<强> angular.module(...)
强>
angular.module('myApp.', [])
.value('version', '0.1')
.service('apiFrontendService', ['$http', function($http) { /* */ }
.factory('localFactory', ['$http', function($http) { /* */ }
.controller('MyController', ['$http', function($http) { /* */ }
等等。在这里,我们一个接一个地链接我们的服务。
var app = angular.module(...)...
var app = angular.module('myApp.', []);
app.value('version', '0.1');
app.service('apiFrontendService', ['$http', function($http) { /* */ };
app.factory('localFactory', ['$http', function($http) { /* */ };
app.controller('MyController', ['$http', function($http) { /* */ };
在此定义一次app
,您可以在所有项目中使用它
答案 3 :(得分:0)
Latter用于定义存储应用程序主要Angular模块的全局变量。因此,代码可以拆分成文件。
// app.js
var app = angular.module('testApp');
// aController.js
app.controller('aController', ...);
// bController.js
app.controller('bController', ...);
// someService.js
app.service('seriousService', ...);