Ангуляр предполагает что все модули используемые в вашем приложении до начала работы приложения уже загружены в память. Т.е. никакой отложенной загрузки.
Есть метод позволяющий добавлять сервисы, контроллеры и т.д (но не модули) после старта приложения, но отложенную загрузку модуля этот метод делать не может и тогда получается что на модули можно разделить только то что вы можете загрузить сразу до старта приложения. -
www.sagarganatra.com/2014/08/lazy-loading-angularj...
Есть метод позволяющий отложенное добавление и загрузку модулей к модулю приложения, но он находится в бета версии и больше выглядит как костыль нежели законченное решение. -
https://github.com/ocombe/ocLazyLoad
Мой личный опыт (после некоторых проб и ошибок) заключается в том что я делю на модули все функциональные блоки приложения и делаю отложенную полную загрузку необходимых модулей при переходе на нужный раздел (без require)
У меня выходит что модуль это:
- Раздел (контроллер)
- Набор сервисов для доступа к api приложения (если приложение использует несколько api, то на каждый api по своему модулю)
- Если можно из приложения выделить самодостаточный (наименьшее количество связей) блок не являющийся полным функционалом раздела, то это как правило становиться модулем (фотогалерея, витрина, меню, вспомогательные элементы тоже можно объединить в модуль)