angular.module(....)函数调用的方差

时间:2014-11-01 23:30:46

标签: angularjs

我是AngularJS的新手。有时我看到:

 angular.module(...)....

有时候

 var app = angular.module(...)...

有时后者被包裹在IIFE中。

什么时候使用前两个中的任何一个?他们有什么真正的区别?

4 个答案:

答案 0 :(得分:3)

大多数关于角度的样式指南推荐第一个变体,因为您从未真正需要定义变量来引用模块 您可以像angular.module('moduleName')一样访问模块:

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

function SomeController() { }

我推荐这个style guide by John Papa

答案 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', ...);