Изолировать JS-библиотеки WebComponent - PullRequest
0 голосов
/ 24 мая 2018

У нас есть основное большое приложение, и мы собираемся создавать отдельные небольшие приложения (микросервисы) с использованием разных библиотек (Angular, React и т. Д.) И компилировать их в веб-компоненты, чтобы использовать их где угодно.В основном приложении есть несколько библиотек (например, underscore.js), некоторые из наших компонентов используют одни и те же библиотеки (например, lodash.js), в этом сценарии мы видим много конфликтов при использовании веб-компонентов внутри основного приложения.Есть ли у вас какие-либо идеи о том, как мы можем изолировать библиотеки веб-компонентов, и они могут работать в изолированном режиме.Также мы использовали ShadowDOM, но не повезло.

1 Ответ

0 голосов
/ 25 мая 2018
  1. Нет такого изолированного режима , поставляемого с технологиями Web Components .Все импортированные библиотеки будут использовать одно и то же пространство имен.

  2. Shadow DOM не относится к изоляции кода Javascript, а касается только изоляции DOM и CSS.

Если вы хотите разрешить конфликты с импортированными сторонними библиотеками, вы можете:

  • Создать свой веб-сайт для импорта стороннего импорта только один раз в глобальной зависимостискрипт.

  • Используйте загрузчик модулей, который будет управлять загрузкой библиотеки, например require.js или встроенную функцию ES6 module import featureили даже ваш собственный загрузчик модулей Vanilla.

  • Изолируйте различные части вашего сайта элементами <iframe> (если это возможно, но вы можете потерять некоторые функции взаимодействия).

Всеэти решения имеют свои преимущества и недостатки.Это зависит от ваших потребностей.

...