Моя команда разрабатывает приложение angular 5, которое уже некоторое время находится в разработке, но недавно нам было поручено заставить приложение работать на других 3 сайтах, которыми владеет компания. Один сайт представляет собой SPA, созданный с помощью Angular6, другой также является SPA, но использует Angular5, а другой использует более старые библиотеки, такие как jQuery.
Руководство хотело, чтобы мы сразу же интегрировались с Angular5 SPA, поэтому мы просто экспортировали все приложение как модуль с дочерними маршрутами и позволили другому приложению выполнять загрузку.
Но я боюсь, что описанный выше подход не сработает для неуглового сайта. Это также тесно связывает оба приложения, поскольку «хост-приложение» должно знать обо всех зависимостях нашего приложения, которое не является тривиальным приложением (я бы сказал, довольно большим), и устанавливать их, это вызывало проблемы, когда обоим приложениям требовались разные версии. такая же зависимость, не говоря уже о том, что нам нужно будет синхронизироваться при обновлении зависимостей или самого фреймворка. Я не думаю, что этот подход будет масштабироваться при встраивании приложения в большее количество сайтов.
Моя первая идея для более общей реализации состояла в том, чтобы обновить наше приложение до Angular 6 и создать веб-компонент с пользовательским элементом, но нам нужно поддерживать IE11 и Edge, которые не поддерживают нативную инкапсуляцию, поэтому нам нужно будет протестировать наше приложение в каждый сайт, где он используется, чтобы убедиться, что они не нарушают наши стили, также я не знаю, может ли веб-компонент управлять дочерними маршрутами или нет.
Другая идея состоит в том, чтобы использовать iframe, но моя проблема здесь заключается в изменении размера iframe для адаптации к содержимому и в том, как добавить дочерние маршруты в «хост-приложение» из «резидентного» приложения внутри iframe.
Есть ли лучший способ добиться того, что нам нужно сделать?
Идеальное решение должно позволять использовать наше приложение на нескольких сайтах (каждый из которых имеет определенную конфигурацию), и нам не нужно знать о сайте, использующем наше приложение.
Спасибо за вашу помощь.
companysite.com/myapp
наше приложение должно управлять дочерним маршрутом: companysite.com/myapp/this/portion/is/ours
Приложение аутентифицируется на одном сайте, но на других аутентификация необязательна, анонимные пользователи в порядке. Мы не контролируем аутентификацию на каком-либо сайте, и аутентификация работает по-разному на каждом сайте, например, на одном сайте это может быть файл cookie, а на другом — авторизация: токен на предъявителя. - person Jorge Riv   schedule 10.10.2018