@devim-front/service
TypeScript icon, indicating that this package has built-in type declarations

3.0.4 • Public • Published

Devim Front: Service

Содержит реализацию шаблона проектирования "сервис" и его вариации.

Установка

Подключите этот пакет в зависимости:

npm i -S @devim-front/service

Общие концепции

Перед тем, как описывать API библиотеки, следует сказать пару слов о сервисах и условиях их применений.

Сервис

Сервис - это класс, содержащий методы для работы с какой-либо логической сущностью, способный иметь промежуточное состояние.

Что такое сервис, проще всего объяснить, сравнивая его с хэлпером. Напомним, хэлпер - это статический класс, содержащий функционально чистые методы, предназначенные для работы с какой-либо одной логической сущностью (дата, денежная сумма, телефон и тому подобное). Но, если вдруг потребуется сохранить внутри класса некое промежуточное состояние (например, объявить статическое свойство), использовать хэлпер для этой цели уже нельзя, поскольку тогда методы потеряют функциональную чистоту. В этом случае вместо хэлпера стоит использовать сервис.

Поскольку сервис хранит своё промежуточное состояние - раз, - и, два, зависит от других сервисов, простое удаление экземпляра его класса чревато побочными эффектами и утечками памяти. Чтобы решить эту проблему, у каждого сервиса есть метод dispose, который следует вызвать перед уничтожением экземпляра. При написании собственного сервиса в этом методе следует освободить все ресурсы занятые ресурсы, отписаться ото всех событий и вызвать методы dispose у всех вложенных экземпляров, если такие есть.

Чтобы один сервис мог реагировать на изменение состояния другого сервиса, используется механизм событий. У каждого экземпляра есть методы on, off и emit, полностью аналогичные соответствующим методам класса EventEmitter из API NodeJS. По умолчанию сервис умеет генерировать лишь событие dispose, уведомляющее, что экземпляр сервиса готовится к удалению. Сам же метод dispose удаляет все подписавшиеся на экземпляр обработчики, поэтому не нужно каждый раз делать этого вручную.

Глобально сервисы делятся на два типа: свободные и одиночные.

Документация находится в разработке.

Readme

Keywords

Package Sidebar

Install

npm i @devim-front/service

Weekly Downloads

14

Version

3.0.4

License

ISC

Unpacked Size

28.6 kB

Total Files

19

Last publish

Collaborators

  • gleb-mikhalkov
  • aazanov