Когда указывать модули зависимостей angularjs?

Я видел несколько случаев, когда вы могли сразу использовать сервисы angular в провайдерах, например:

.module('yea.buddy', [
    'ui-translate'
])
.config(function($translateProvider) { ... })

против

.module('yea.buddy.two', [
    'some-module'
])
.config(['some-module-service', function(someModuleService) { ... }])

В чем разница между ними? Когда подразумевается ресурс, а квадратные скобки не нужны?

edit: У меня есть случай, когда есть некоторая путаница, и я спрашиваю, потому что не хочу нарушать минификацию.


person NewToMS    schedule 02.04.2015    source источник
comment
возможный дубликат Цель использования квадратной скобки в угловом   -  person New Dev    schedule 02.04.2015


Ответы (1)


  1. В модуле, например, angular.module ('app', []); квадратная скобка предназначена для модулей зависимости. Это обязательно, если у вас есть какая-либо зависимость, которую вы должны указать здесь, собираетесь ли вы минимизировать или нет.

  2. Для создания любого контроллера, служб, директив и фильтров вы должны указать свою соответствующую зависимость, если хотите минимизировать. Если вы не хотите минимизировать, это необязательно

  3. В случае angular.module ('app', []). Config () он аналогичен элементу 2, что означает, что он необязателен, если вы не собираетесь минимизировать

Бонус:

Зачем нужен Angular?

Попробуем понять, как angular обнаруживает зависимость от аргументов функции. Порядок аргументов бесполезен. Если вы можете изменить порядок любого аргумента, он будет работать без каких-либо проблем. На самом деле angular поддерживает глобальный массив $ инжектор, где он хранит каждый отдельный экземпляр, где индекс массива (свойства объекта) - это ваше предоставленное имя при создании службы или фильтра или любых других компонентов. Например вы создали услугу

  angular.module('app',[]).service('good', function(){

  });

Так угловатый

$injector['good'] = service/filter etc output 

Ладно, вернемся к основной теме. Поэтому, когда вы можете попытаться ввести свою недавно созданную службу «хорошо» в контроллер в качестве аргумента, angular сначала узнает все предоставленные аргументы и восстановит свой экземпляр из $ injector [EACH_SINGLE_ARUGMENT], то есть для вашего случая $ injector ['good']

Но когда вы минимизируете свой код, большую часть времени он минимизирует аргумент функции. Например, «хорошо» будет «а». В результате angular не может обнаружить. Вот почему angular использует эти трюки, поэтому, когда вы также указываете свою зависимость в квадратной скобке, например

app.controller(['good', function(good) {
 }] );

angular берет имя из этого массива, потому что сценарий minify не изменяет значения массива. Поскольку сценарий minify обычно выполняет следующие действия:

  app.controller(['good', function(a) {
   }] );

Надеюсь, ты немного тебе поможешь.

person Samir Das    schedule 02.04.2015