Многим приложениям приходится решать одни и те же общие задачи, такие как представление единого пользовательского интерфейса, отображение данных и обеспечение ввода данных. Разработчики могут создавать общие решения для конкретных предметных областей, которые можно адаптировать для повторного использования в различных приложениях. Такие решения можно реализовать в виде библиотек Angular, а эти библи��теки можно публиковать и распространять как npm-пакеты.
Библиотека Angular — это проект Angular, который отличается от приложения тем, что не может запускаться самостоятельно. Библиотеку необходимо импортировать и использовать внутри приложения.
Библиотеки расширяют базовые возможности Angular.
Например, чтобы добавить реактивные формы в приложение, добавьте пакет библиотеки с
помощью команды ng add @angular/forms, а затем импортируйте ReactiveFormsModule из библиотеки @angular/forms в
коде вашего приложения.
Аналогично, добавление библиотеки service worker в приложение Angular является одним из
шагов для превращения приложения в Progressive Web App
(PWA).
Angular Material — это пример большой библиотеки общего назначения, которая
предоставляет продвинутые, повторно используемые и адаптируемые UI-компоненты.
Любой разработчик приложений может использовать эти и другие библиотеки, опубликованные в виде npm-пакетов командой Angular или сторонними разработчиками. См. раздел Использование опубликованных библиотек.
ПОЛЕЗНО: Библиотеки предназначены для использования приложениями Angular. Чтобы добавить возможности Angular в веб-приложения, не использующие Angular, используйте пользовательские элементы Angular (Angular custom elements).
Создание библиотек
Если вы разработали функциональность, подходящую для повторного использования, вы можете создавать свои собственные библиотеки. Эти библиотеки можно использовать локально в вашем рабочем пространстве или публиковать как npm-пакеты, чтобы поделиться ими с другими проектами или другими разработчиками Angular. Эти пакеты можно публиковать в реестре npm, частном реестре npm Enterprise или в частной системе управления пакетами, поддерживающей пакеты npm. См. раздел Создание библиотек.
Решение упаковать функциональность в библиотеку — это архитектурное решение. Оно сравнимо с решением о том, является ли функциональность компонентом или сервисом, или с определением области видимости компонента.
Упаковка функциональности в библиотеку заставляет артефакты внутри библиотеки быть отделенными от бизнес-логики приложения. Это помогает избежать различных плохих практик или архитектурных ошибок, которые могут затруднить отделение и повторное использование кода в будущем.
Вынос кода в отдельную библиотеку сложнее, чем простое размещение всего в одном приложении. Это требует больших вложений времени и размышлений для управления, поддержки и обновления библиотеки. Эта сложность может окупиться, когда библиотека используется в нескольких приложениях.