Как создать оболочку Angular вокруг существующей библиотеки Javascript?
У меня есть чистая библиотека JavaScript, которую пользователи могут установить через npm. Я хочу добавить / создать Angular "обертку" к этой библиотеке, чтобы ее можно было без проблем использовать в проектах Angular, но я не уверен, как это сделать. Я использую Angular-Cli v6.
Это очень похоже на то, как можно создать оболочку библиотеки Angular для существующей библиотеки Javascript? Однако единственным ответом является ссылка на ng-packagr. Я сделал несколько руководств по созданию библиотеки с помощью ng-packagr, однако они не описывают (и я не могу найти примеры в другом месте) того, как создать оболочку для неангулярной библиотеки JS.
Любая помощь очень ценится!:)
1 ответ
Старый вопрос, но мне он нравится. На это нет однозначного ответа, поэтому вот как я это сделал:
Укороченная версия
Прочтите о внутреннем устройстве и о том, как я упаковал библиотеку Google Maps Javascript API
Длинная версия
Следующее очень абстрактно, но это абстрактный вопрос, так что давайте ...
Основные вещи, которые вам, вероятно, необходимо реализовать:
- Обнаружение изменений в вашей библиотеке Angular и делегирование их нативной библиотеке.
- Обнаружение собственных событий и их добавление в вашу библиотеку Angular.
- Переключение выполнения в Angular и из него с помощью
.
Другими соображениями могут быть производительность, масштабируемость, добавление новых инструментов к существующим и т. Д. Независимо от того, с какой библиотекой вы имеете дело, вы, вероятно, закончите упаковку функции функцией, класс классом, модуль модуль и т. д.
Возникает вопрос: «Должен ли я вручную писать весь этот код? Серьезно ли я собираюсь писать метод для каждого собственного метода? Что происходит, когда собственная библиотека меняет реализацию? Мне пришлось бы менять свой код везде ... 🤔"
Чтобы упростить и сделать вашу библиотеку упаковки масштабируемой, вы можете автоматизировать механизм упаковки (один из способов - использовать Javascript
Вот более подробное объяснение с примерами
Для делегирования событий вы можете создать механизм, который генерирует наблюдаемые (или EventEmitters) для ваших собственных событий.
В некоторых случаях вам следует рассмотреть возможность использования
Моя библиотека Angular Google Maps с открытым исходным кодом, и вы можете посмотреть. Я реализовал в нем несколько очень интересных архитектурных механизмов. Любой, кто столкнется с этим постом и хочет получить более подробную информацию или помощь, может связаться со мной.
Ура