最好是`mainApp.config([' $ routeProvider',function($ routeProvider)`和`mainApp.config(function($ routeProvider)`

时间:2016-06-06 07:13:12

标签: javascript angularjs function

我刚刚开始学习angularJS,但我可以注意到同样的事情,在某些地方,当我们开始在angularJS中编写一个函数时,我注意到有些人定义了他们将要使用的功能,如此

var mainApp = angular.module("mainApp", ['ngRoute']);
     mainApp.config(['$routeProvider', function($routeProvider) {
        $routeProvider.

        when('/addStudent', {
           templateUrl: 'addStudent.htm',
           controller: 'AddStudentController'
        }).

        when('/viewStudents', {
           templateUrl: 'viewStudents.htm',
           controller: 'ViewStudentsController'
        }).

        otherwise({
           redirectTo: '/addStudent'
        });
     }]);

但是如果我们只编写没有这个['$routeProvider'的函数,那么同样的函数工作正常

var mainApp = angular.module("mainApp", ['ngRoute']);
     mainApp.config(function($routeProvider) {
        $routeProvider.

        when('/addStudent', {
           templateUrl: 'addStudent.htm',
           controller: 'AddStudentController'
        }).

        when('/viewStudents', {
           templateUrl: 'viewStudents.htm',
           controller: 'ViewStudentsController'
        }).

        otherwise({
           redirectTo: '/addStudent'
        });
     });

我知道在编写代码时没有什么大不同,但两种方式仍然存在差异。如果是,那么它是否会缩小?除了使用它之外还有其他任何负面影响吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

mainApp.config(['$routeProvider', function($routeProvider) {
}]);

此类型定义控制器被调用Inline Array Annotation。它是最小安全 min-safe 意味着如果您缩小代码,那么它仍然有用。

mainApp.config(function($routeProvider) {
});

这种定义控制器的类型称为“隐式注释”。它不是最小安全 min-safe 意味着如果您缩小代码,那么它将无效。

还有另一种声明控制器$inject Property Annotation

的方法
var MyController = function($scope, greeter) {
  // ...
}
MyController.$inject = ['$scope', 'greeter'];
someModule.controller('MyController', MyController);

阅读更多信息click here