Ответ 1
Ответы на ваш вопрос субъективны, однако есть некоторые рекомендации из официальных документов, которые вы можете выполнить: Какие типы модулей я должен иметь и как их использовать? , Если вы не читали документы по NgModule
и часто задаваемым вопросам, я бы предложил потратить несколько часов на их изучение, все будет намного яснее (по крайней мере, они были для меня :)
Я использую следующую настройку, и это работает хорошо для меня:
- app/shared - это модуль, в котором я храню мелкие вещи, которые понадобятся каждому другому модулю. У меня есть 3 подмодуля там
directives
,components
иpipes
, просто чтобы вещи были организованы немного лучше. Примеры:filesize.pipe
,click-outside.directive
,offline-status.component
... - app/public - В этом модуле хранятся общедоступные маршруты и компоненты верхнего уровня. Примеры:
about.component
,contact.component
,app-toolbar.component
- app/core - Службы, которые требуется приложениям (и не могут работать без них). Примеры:
ui.service
,auth.service
,auth.guard
,data.service
,workers.service
.... - app/protected - аналогично общедоступным, только для авторизованных пользователей. Этот модуль имеет защищенные маршруты и компоненты верхнего уровня. Примеры:
user-profile.component
,dashboard.component
,dashboard-sidebar.component
... - app/features - Это модуль, где функциональность приложения. Они организованы в нескольких подмодулях. Если вы играете в приложение, это значит, что
player
,playlist
,favorites
подмодули. Если вы посмотрите на@angular/material2
это будет эквивалентно ихMaterialModule
и многим подмодулям, таким какMdIconModule
,MdSidenavModule
и т.д. - app/dev - я использую этот модуль при разработке, не отправляю его на производство.
Общий совет:
- организовать функции по функциональности, а не по страницам
- сохраняйте аналогичные маршруты в своем собственном модуле (хорошо для ленивой загрузки)
- услуги, которые приложение должно выполнять, переходят к ядру
- вещи, которые вы импортируете более одного раза (или дважды), вероятно, хороши для общих
- читать документы подробно, много хорошего материала там
Чтобы ответить на ваши конкретные вопросы: я бы поместил все эти маршруты в один модуль - static
, public
, независимо от имени. CsrfService
- core, Logger
- core или dev, HttpModule
- core, вам нужен только один экземпляр (возможно), auth
- core. Не размещайте сервисы совместно.
Если вы не можете решить, как/что нужно группировать в функции, создайте новое приложение, скопируйте специальную папку с функциями, и оно тоже должно работать там. Если это не так, вам нужно лучше организовать ситуацию.