Основной формой организации приложений в 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:
<html ng-app="myApp">
Используя модуль, мы можем определить ряд компонентов, таких как контроллеры, сервисы и т.д., которые затем применяются в приложении. Для этого объект Module имеет ряд методов, наиболее используемые из них:
config(callback)
: регистрирует функцию callback, которая используется для его конфигурации в процессе загрузки
constant(key, value)
: определяет сервис, который возвращает константное значение value
controller(name, constructor)
: создает контроллер
directive(name, factory)
: создает директиву, которая расширяет стандартную разметку html
factory(name, provider)
: создает службу
filter(name, factory)
: создает фильтр
provider(name, type)
: создает сервис
service(name, constructor)
: создает сервис