AngularJs - внедрение $scope
Два примера ниже эквивалентны?
1.
app.controller('ctrl',function($scope){});
2.
app.controller('ctrl',['$scope',function($scope){});
Я новичок в AngularJs. Из моего теста они делают то же самое, но не уверены, почему есть два разных способа.
3 ответа
Они будут работать одинаково, но обычно предпочтителен второй метод. Это связано с минимизацией и тем фактом, что когда вы распространяете свое приложение, возможно, имена переменных будут изменены, если они не будут элементами в массиве.
Конечно, если имена ваших контроллеров изменятся во время минимизации, это приведет к сбою внедрения зависимостей Angular.
Dependency Injection
отличная особенность угловых js, используемых при минимизации JS,
До JS Minification: ctrl.js
app.controller('ctrl'['$scope','$rootScope','$state',function($scope,$rootScope,$state){
$scope.message="Hello World"; //Must be maintain serial of Dependency Injection either wise show error
});
После JS Minification: ctrl.min.js
app.controller('ctrl'['$scope','$rootScope','$state',function(a,b,c){
a.message="Hello World";
//So do not write $scope again just define 'a' instead of '$scope' like as $rootScope=b,$state=c ,so huge memory save in JS file.
});
Они оба эквивалентны и будут работать просто отлично. Вы можете выбрать одно из другого, в зависимости от того, что вы планируете делать со своим проектом. Для минимизации в первую очередь важно использовать вторую нотацию, которая называется Inline Array Annotation или, в более общем случае, Dependency Annotation.
Вы можете найти подробную информацию о внедрении зависимостей в документации AngularJS здесь.