Моя команда разработала приложение с угловым 5, которое было в производстве некоторое время, но недавно нам было поручено создать приложение на других 3 сайтах, которыми владеет компания. Один сайт - это SPA, построенный с помощью Angular6, другой - также SPA, но использует Angular5, в то время как другой использует некоторые старые библиотеки, такие как jQuery.
Менеджмент хотел, чтобы мы сразу интегрировались с Angular5 SPA, поэтому мы просто экспортировали все приложение в виде модуля с дочерними маршрутами, а другое приложение выполнило загрузку.
Но я боюсь, что вышеупомянутый подход не будет работать для негласного сайта. Это также тесно связано с обоими приложениями, поскольку приложение "хост" должно знать обо всех зависимостях нашего приложения, которое не является тривиальным приложением (я бы сказал, довольно большой) и установить их, что вызвало проблемы, когда для обоих приложений нужны разные версии той же зависимости, не говоря уже о том, что нам нужно будет синхронизировать при обновлении зависимостей или самой структуры. Я не думаю, что этот подход будет масштабироваться при встраивании приложения в другие сайты.
Моя первая идея для более общей реализации заключалась в том, чтобы обновить наше приложение до Angular 6 и создать веб-компонент с настраиваемым элементом, но нам нужно поддерживать IE11 и Edge, которые не поддерживают встроенную инкапсуляцию, поэтому нам нужно будет протестировать наше приложение в каждый сайт, где он используется, чтобы убедиться, что они не нарушают наши стили, также я не знаю, может ли веб-компонент управлять дочерними маршрутами или нет.
Другая идея заключается в использовании iframe, но моя проблема заключается в изменении размера iframe для адаптации к контенту и о том, как добавить дочерние маршруты в приложение "host" из "резидентного" приложения внутри iframe.
Есть ли лучший способ достичь того, что нам нужно делать?
Идеальное решение должно позволить нашему приложению использоваться на нескольких сайтах (каждый из которых обеспечивает определенную конфигурацию), без необходимости знать о сайте с помощью нашего приложения.
Спасибо за вашу помощь.