У нас есть несколько веб-приложений, которые мы хотим представить в одном приложении с одной страницей. Мы ищем архитектуру/инфраструктуру с микро-интерфейсом. Как мы видим, это наши варианты реализации:
- Использование рамки с открытым исходным кодом с одним спамом: https://github.com/CanopyTax/single-spa
- Использование iframes (дружественных iframes) хостинг-приложения (оболочки) и загрузка каждого приложения в соответствии с текущим URL-адресом.
- Написание собственной структуры Javascript
- Другой?
Текущее состояние - монолитное приложение FE, которое потребляет другое дочернее приложение как внутренние сторонние пакеты. Этот подход не масштабируется для нас, потому что приложение-хостинг создает все продукты вместе, и ничто действительно не разделяется.
Наши требования - обычные требования к микро-интерфейсу: 1. Независимое развитие. Каждая команда может выбирать свои собственные структуры и строить свою продукцию независимо от других продуктов.
-
Независимое развертывание. Каждое приложение может быть модернизировано в производстве без простоя и без вмешательства других приложений.
-
Общие компоненты. Мы используем Angular4 в наших приложениях, и у нас есть собственная сторонняя библиотека (разделяемые компоненты и логика), которые мы уже писали, которые должны быть разделены между всеми продуктами для аналогичного внешнего вида.
-
Мы хотели бы иметь возможность обновлять каждую инфраструктуру приложения (Angular, RXjs, TypScript и т.д., А также для нашей собственной библиотеки компонентов), не заботясь о других приложениях.
Мы пытались использовать структуру единого спама, но у нас есть некоторые проблемы, и в настоящее время мы находим, что думаем о себе, если это правильный подход для нас или мы должны попробовать другой подход.
Проблемы, которые мы используем в одном спа-салоне, следующие: 1. Загрузка активов проблематична. (У нас должны быть файлы с ресурсами в корневой папке хостинг-приложения, и мы сталкиваемся с конфликтами активов при переключении на другое приложение). 2. Мы все еще не знаем, как справляться с глобальным стилем для всех приложений (мы используем sass для стилизации, и его нужно выполнять вместе с локальными стилями для каждого приложения). 3. Углеродная структура (или все другие рамки) невозможна для одного приложения это все или ничего (поскольку у нас есть один экземпляр углового). 4. Мы должны внедрить другую комплектацию для разработки другой стороны приложения-хостинга (оболочки).
Когда мы думаем о решении Iframe (с использованием дружественного iframe), мы визуализируем полное разделение между всем дочерним приложением и склонны полагать, что это более подходящий подход для нас.
Есть ли подводные камни для использования iframes?
Спасибо, Даниэль