=====Модули в AngularJS=====
Основной формой организации приложений в AngularJS являются модули. Модуль представляет хранилище различной информации: директив, фильтров, контроллеров и т.д. При этом одно приложение может иметь несколько модулей. Например, разные модули могут представлять какую-либо специфическую функциональность.\\
\\
Модули позволяют ассоциировать определенный участок html-страницы с приложением AngularJS. Модули также позволяют организовать и структурировать различные компоненты приложения AngularJS. Кроме того, модульность архитектуры приложения повышает тестируемость, и мы можем использовать различные части-модули приложения в других приложениях.\\
\\
Для создания модуля используется метод **angular.module()**. Этот метод принимает три параметра, два из которых являются обязательными:\\
- Название модуля. Согласно соглашениям о наименовании модуль должен иметь суффикс App
- Набор других модулей в виде строкового массива, от которых данный модуль зависит
- Конфигурационные настройки модуля
В качестве результата метод angular.module() возвращает объект Module. Например, создадим модуль:\\
var myApp = angular.module('myApp', []);
Здесь создается модуль myApp. Вместо набора модулей, передаваемых вторым параметром, мы можем отставить пустым массивом. В то же время было бы ошибкой вообще убрать этот параметр. Так как выражение //var myApp = angular.module('myApp');// будет представлять попытку получить модуль myApp в одноименную переменную, а не создать его.\\
Чтобы ассоциировать модуль с определенным куском html-страницы, нужно использовать директиву **ng-app**:
Используя модуль, мы можем определить ряд компонентов, таких как контроллеры, сервисы и т.д., которые затем применяются в приложении. Для этого объект Module имеет ряд методов, наиболее используемые из них:\\
====Методы объекта module====
* animation(name, factory) используется для создания анимации
* config(callback) регистрирует функцию которая используется для конфигурации модуля при его загрузке(init, constructor)
* constant(key, value) определяет сервис который возвращает константу
* controller(name, constructor) создает контроллер
* directive(name, factory) создает директиву
* factory(name, provider) создает сервис применяя фабричный метод
* filter(name, factory) создает фильтр
* provider(name, type) создает сервис применяя метод провайдер
* name возвращает имя модуля
* run(callback) регистрирует функцию которая будет вызванан после того как Angular загрузит все модули
* service(name, constructor) создает сервис применяя сервис метод
* value(name, value) создает сервис который возвращает константу