是否使用:var app = angular.module ...或简单地:angular.module(

时间:2015-09-17 15:16:58

标签: javascript angularjs

我是Angular的新手,正在学习各种教程(Codecademy,thinkster.io等),并且已经看到了两种声明app容器的方法。首先:

var app = angular.module('myApp', [])

或者只是这样:

angular.module('myApp', [])

是一种比另一种更好的做法还是只是一种不同的风格而没有任何重大影响?

4 个答案:

答案 0 :(得分:1)

除了

之外,这两种方法的工作原理没有区别

var app = angular.module('myApp', [])会添加一个额外的全局变量(如果你 hyper 意识到全局变量),但这会缩短你的代码,不要必须多次重复angular.module('myApp')次。您可以多次使用app代替angular.module('myApp').xxx

您可以按如下方式链接方法,而不是添加变量

angular.module('myApp', [])
    .controller(.....)
    .directive(.....)
    .factory(.....);

答案 1 :(得分:0)

angular.module支持第三个参数config函数。如果您链接,您可以执行多个配置,如果您有很多配置,这可能很有用。

angular.module('myModule', [])
    .config(function(injectables) {
        //config block 1
    })
    .config(function(injectables) {
        //config block 2
    });

而不是:

angular.module('myModule', [], function(){
    //only config
});

此外,它还消除了在创建提供程序时创建全局变量的风险。

答案 2 :(得分:0)

没有区别,只有风格和你喜欢的任何东西,请看这个

angular.module('myApp', [])
  .controller("xCtrl", ['$scope', function($scope){
   }])
   .controller("yCtrl", ['$scope', function($scope){
   }])
  .controller("zCtrl", ['$scope', function($scope){
   }]);

在这种情况下,如果你把;在y控制之后,z控制器将无法工作。意味着所有都将被视为一个单一的功能。另一方面:

var app = angular.module('myApp', []);

app.controller("xCtrl", ['$scope', function($scope){
}]);

app.controller("yCtrl", ['$scope', function($scope){
}]);

app.controller("zCtrl", ['$scope', function($scope){
}]);

其中每个功能都是独立的。

答案 3 :(得分:0)

设置引用模块的全局变量的唯一原因是,如果要将其分成多个文件。

例如:

<强> main.js:

var app = angular.module('myApp', [])
.controller('controller1',.....)
.controller('controller2',.....);

<强> directives.js

app
.directive('directive1',.....)
.directive('directive2',.....);

尽管如此,你应该知道在全局变量上进行中继并不是那么好(在这个例子中app是全局的),因为它们可能会被其他库重写,还有其他方法可以引用你的模块在其他文件中,例如:

<强> main.js:

angular.module('myApp', [])
.controller('controller1',.....)
.controller('controller2',.....);

<强> directives.js

angular.module('myApp')
.directive('directive1',.....)
.directive('directive2',.....);

如果它是一个庞大而复杂的角度应用程序,您甚至可能希望将它分成多个模块:

<强> main.js:

angular.module('myApp', ['myApp.directives'])
.controller('controller1',.....)
.controller('controller2',.....);

<强> directives.js

angular.module('myApp.directives', [])
.directive('directive1',.....)
.directive('directive2',.....);