Я занимаюсь некоторыми исследованиями, как разделить огромный одностраничный монолит на архитектуру с микро-интерфейсом.
Идея:
- страница состоит из нескольких компонентов, которые будут работать автономно
- каждый компонент управляется одной командой разработчиков
- каждая команда может изменять, обновлять и развертывать свои компоненты, не разбирая компоненты других команд
- каждая команда выбирает собственную инструментальную таблицу
Причина
Чтобы эффективно разрабатывать большие приложения, вам нужно много работать над этим. Однако количество разработчиков для каждого приложения/команды плохо масштабируется. Параллельная разработка нескольких независимых приложений независимыми командами, однако, может быть масштабирована произвольно
Имея это в виду, крайне важно, чтобы команды могли выбирать собственную инструментальную таблицу и особенно выполнять независимые обновления версий сторонних библиотек (например, угловые, реагировать, jquery). Если бы это было не так, обновление инфраструктуры должно было быть совместимо с каждым отдельным компонентом, прежде чем вы могли бы развернуть его для производства.
Это работает с угловым?
В то время как независимые обновления версий необходимы, было бы разумно ограничить команды несколькими поддерживаемыми фреймворками (Angular, React, Vue, Polymer...), и сейчас я пытаюсь создать демо, состоящее исключительно из Angular-Apps.
Однако, хотя Angular 5 предположительно является платформой, которая поддерживает огромные многомодульные приложения, кажется почти невозможным иметь несколько независимых угловых приложений, работающих в одном окне браузера.
Мне удалось загрузить несколько Angular-Apps (разные версии, каждый из которых размещен на собственном сервере) на одном веб-сайте, используя HTML-Imports. Однако существует несколько global
зависимостей, которые необходимо разделить между приложениями
- zone.js может быть запущен только один раз
- Маршрутизация требует изменений url
- Файлы браузера, такие как файлы cookie, sessionstorage и т.д.
В сети есть несколько статей о том, как загружать несколько угловых модулей, но все они относятся к нескольким модулям в одном и том же ядре-приложении, что, в свою очередь, означает, что все они работают на одной и той же версии фреймворка, а обновление означает, что вы должны перестроить и развернуть весь монолит.
Есть ли какое-либо решение, кроме " iframes
", чтобы получить несколько Угловых (5) приложений, работающих на одной странице?