Когда указывать модули зависимостей angularjs?
Я видел несколько случаев, когда вы можете сразу использовать угловые сервисы в провайдерах, например:
.module('yea.buddy', [
'ui-translate'
])
.config(function($translateProvider) { ... })
против
.module('yea.buddy.two', [
'some-module'
])
.config(['some-module-service', function(someModuleService) { ... }])
Какая разница между этими двумя? Когда подразумевается ресурс, а обозначение в квадратных скобках не требуется?
редактировать: у меня есть случай, когда есть некоторая путаница, и я спрашиваю, потому что я не хочу нарушать минификацию.
1 ответ
В модуле, например, angular.module('app',[]); квадратная скобка для модулей зависимости. Это обязательно, если у вас есть зависимость, которую вы должны указать здесь, собираетесь ли вы минимизировать или нет.
Для создания любого контроллера, сервисов, директив и фильтров вы должны предоставить соответствующую зависимость, если хотите минимизировать. Если вы не хотите минимизировать это необязательно
В случае angular.module('app',[]). Config(), это то же самое, что и пункт 2, что означает, что это необязательно, если вы не собираетесь минимизировать
Бонус:
Зачем нужен Angular?
Давайте попробуем разобраться, как угловое определение зависимости от аргументов функции. Упорядочение аргументов бесполезно. Если вы можете изменить порядок любого аргумента, он будет работать без проблем. На самом деле angular поддерживает глобальный массив $ инжектор, где хранит каждый экземпляр, где индекс массива (Свойства объекта) - это ваше имя при создании службы или фильтра или любых других компонентов. Например, вы создали сервис
angular.module('app',[]).service('good', function(){
});
Так угловатые имеют
$injector['good'] = service/filter etc output
Хорошо, вернемся к основной теме. Поэтому, когда вы можете попытаться внедрить вашу вновь созданную службу 'good' в контроллер в качестве аргумента, angular сначала узнает все предоставленные аргументы и восстановит его экземпляр из $injector[EACH_SINGLE_ARUGMENT], то есть для вашего случая $injector['good']
Но когда вы минимизируете свой код, большую часть времени он минимизирует аргумент функции. Например, "хорошо" будет "а". В результате угловой не удается обнаружить. Вот почему Angular использует эти трюки, поэтому, когда вы предоставляете свою зависимость в квадратной скобке, например,
app.controller(['good', function(good) {
}] );
angular берет имя из этого массива, потому что скрипт minify не меняет значения массива. Поскольку скрипт minify обычно делает следующее:
app.controller(['good', function(a) {
}] );
Надеюсь, ты немного поможешь.