При организации приложения AngularJS все ваши модули должны иметь одинаковые имена?
Должны ли ваши модули иметь одинаковое имя при организации проекта Angular? Я видел примеры обоих повсюду.
Учитывая такую структуру:
root-app-folder
├── index.html
├── scripts
│ ├── controllers
│ │ └── main.js
│ │ └── ...
│ ├── directives
│ │ └── myDirective.js
│ │ └── ...
│ ├── filters
│ │ └── myFilter.js
│ │ └── ...
│ ├── services
│ │ └── myService.js
│ │ └── ...
│ ├── vendor
│ │ ├── angular.js
│ │ ├── angular.min.js
│ │ ├── es5-shim.min.js
│ │ └── json3.min.js
│ └── app.js
├── styles
│ └── ...
└── views
├── main.html
└── ...
Как правило, каждый из ваших файлов начинается с angular.module('appName')...
или сделать их уникальными, такими как angular.module('thisModuleName)...
?
Каковы преимущества и недостатки обоих?
2 ответа
В типичном проекте вы будете работать только с одним модулем. Как правило, модуль будет объявлен в app.js
файл с синтаксисом массива:
angular.module('app', ['dep1', 'dep2'])
куда dep1
а также dep2
любые зависимости, которые нужны вашему модулю. Затем в любом другом файле, например, в контроллере, вы просто связываете его с app
Модуль, как это:
angular.module('app').controller(...) // no dependency array
AngularJS поставляется со встроенным механизмом внедрения зависимостей. Вы можете разделить ваше приложение на несколько различных типов компонентов, которые AngularJS может внедрять друг в друга. Модульность вашего приложения облегчает повторное использование, настройку и тестирование компонентов в вашем приложении.
AngularJS содержит следующие основные типы объектов и компонентов:
- Значение
- завод
- обслуживание
- поставщик
- постоянная
Эти основные типы могут быть внедрены друг в друга с помощью механизма внедрения зависимостей AngularJS. В оставшейся части этого текста я объясню, как определить и внедрить эти компоненты друг в друга.