Как вы организуете / структурируете свои Angular приложения?
Используете ли Core/Shared модули? Как храните модели, сервисы, конфиги: централизовано или для каждого модуля отдельно? Есть ли у вас мастер-страницы и как вы их используете? Как выглядит структура папок вашего проекта?
Я, например, разбиваю свой проект так:
./core - импортирую один раз, использую для сервисов авторизации, логгирования, конфигов, др.
./configs
./auth
./other-features...
core.module.ts
./shared -импоритрую в каждый feature-module, использую для переиспользуемых фич, моделей
./models
./go-back
./grid-list
./other-features...
shared.module.ts
./public - публичные страницы приложения, доступ к которым разрешен всем
./modules * - home, help, etc
./public-master - модуль с мастер страницей для публичных маршрутов
public.routing.ts
public.module.ts
./secure - защищенные страницы приложения, доступ к которым по правам
./modules * - settings, approval, etc
./secure-master - модуль с мастер страницей для публичных маршрутов
secure.routing.ts
secure.module.ts
* - модули имеют свою структуру, например модуль settings ./modules/settings
./models - модели
./services - сервисы
./features - компоненты модуля
./pages - страницы модуля (всегда есть мастер страница для модуля, например settings-master.page.ts, представляет собой компонент)
settings.module.ts
settings.routing.ts
Один из вопросов, который меня сейчас волнует: я задумался вынести все endpoint-сервисы (сервисы для запроса данных с сервера) и все endpoint-модели куда-нибудь в корень, чтобы хранить централизованно. Зачем? Стали возникать случаи, когда нужен сервис или модель lazy-модуля в другом lazy-модуле. Что посоветуете, что подскажете, читали вопросы выше?:)
Обычно использую следующую структуру: --app
----layout
----modules
----pages (обычно одна страница Not found)
----redux
----shared (общее для всего приложения, обычно так же логически разбиваю по папкам)
------modules (общие модули)
------models
------providers
------pipe
И для каждого модуля: --modules
----module 1
------auth
--------layout
--------pages
--------shared (где находятся модели, сервисы, компоненты для pages именно этого модуля)
....
----module N
------auth
--------layout
--------pages
--------shared (где находятся модели, сервисы, компоненты для pages именно этого модуля)