Разница между приведенными ниже двумя контроллерами

Я новичок в угловой 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, поэтому вам нужно вводить зависимости в виде строки.

Это руководство объясняет, почему вы должны сделать второй.

Другие вопросы по тегам