我刚刚开始学习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'
});
});
我知道在编写代码时没有什么大不同,但两种方式仍然存在差异。如果是,那么它是否会缩小?除了使用它之外还有其他任何负面影响吗?
提前致谢!
答案 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