это ответ, основанный на мнении.Так что за этим последует мое видение вашего вопроса, а не универсальный ответ.
Но когда мы говорим об угловых и архитектурных шаблонах, предоставляемых Angular, мы можем выделить 3 основных случая:
- Сервис
- компонент промежуточного программного обеспечения
- Компонент пользовательского интерфейса
(Для простоты я не буду добавлять в мои объяснения Трубу и Директиву)
Давайте начнем с самого простого случая, UI Component , это нормальный компонент, который не выполняет каких-либо функций, просто принимает Input для конфигурации и выводит Some Event.Цель состоит в том, чтобы обеспечить легкость изменения / повторного использования.Эта часть должна быть сильно отсоединена от вашей бизнес-логики.
Поскольку вы отсоединили свой пользовательский интерфейс, вам необходим компонент промежуточного программного обеспечения или компонент контейнера (выберите предпочитаемое имя:D), который будет связующим звеном между вашим компонентом пользовательского интерфейса и вашей бизнес-логикой.
И все бизнес-логики (и не только ваш вызов ajax) должны быть встроены в вашу службу .Зачем ?потому что:
- вы открываете возможность повторно использовать эту бизнес-логику в другой части вашего проекта (еще один пользовательский интерфейс, которому потребуется существующий метод).
- Вы лучше контролируете, как сервис предоставляется в вашем приложении (один экземпляр, многие экземпляры, замените существующего поставщика новой версией, ...).
- Упрощение межкомпонентного взаимодействия.
- Безрамная реализация (если вы удалите @Injectable decorator, вы можете переместить этот класс на любую другую технологию)
Если вы помните обо всей этой "Главной категории", вы можете уважать Принцип SOLID .
Если вы хотите больше копать: у вас потрясающая конференция от Todd Motto