Разница между приведенными ниже двумя контроллерами
Я новичок в угловой JS. Я столкнулся с двумя различными типами объявлений контроллеров, которые я не могу понять, как они влияют на сцену.
vmyApp.controller('GreetingController', ['$scope', function($scope) {
$scope.greeting = 'Hola!';
}]);
Из приведенного выше фрагмента я понял, что они взяли функцию в зависимости от контроллера с двумя параметрами, один из которых был "$scope", а другой - с функцией.
Другой фрагмент следующим образом:
vmyApp.controller('GreetingController', function($scope) {
$scope.greeting = 'Hola!';
});
Здесь прямая функция как второй параметр для контроллера без какой-либо зависимости.
Пожалуйста, объясните мне различия его воздействия.
2 ответа
Они выполняют ту же функцию, за исключением того, что верхний контроллер - это то, что вы должны использовать, если собираетесь минимизировать свой код. AngularJS использует имена параметров, чтобы ввести значения в функцию вашего контроллера. В процессе минимизации JavaScript эти параметры переименовываются в более короткие строки. Сообщая, какие параметры вводятся в функцию с помощью массива строк, AngularJS может по-прежнему вводить правильные значения при переименовании параметров.
Ничего особенного, когда вы запускаете приложение AngularJS.
Однако, когда вы попытаетесь скомпилировать его с помощью обработчика задач (Gulp, Grunt или других), второй сломает ваше приложение, так как $scope будет заменен.
Строки не заменяются в процессах minif и uglify, поэтому вам нужно вводить зависимости в виде строки.
Это руководство объясняет, почему вы должны сделать второй.