В этой статье не рассматриваются исходные руководства и статьи для начала работы, я хочу с точки зрения макросов представить микро- и простой фронтенд-рассказ о некоторых мыслях, которыми мы занимаемся в микро-проектах фронтенда.
Когда я впервые присоединился к команде, наша система по-прежнему не полностью отделяется шаблон передней и задней части архитектуры, предоставляет запись для установки приложений React / Vue Repearing / Vue корневого контуса на корневом узле.
Мы находим, что есть некоторые недостатки этой архитектуры:
- Back-end шаблоны парсинга, шаблоны монтирования;
- Серверная часть управляет маршрутизацией и контролирует ее, клиентская часть теряет контроль над маршрутизацией, и трудно контролировать правила маршрутизации нескольких команд;
- Каждый выпуск внешнего интерфейса должен сначала выпускать статические ресурсы, а затем выпускать шаблоны, что громоздко и подвержено ошибкам;
- Этот метод разработки относительно стар, и его трудно вызвать энтузиазм у фронтенда, который любит возиться с новыми вещами;
Но к счастью, в это время в нашей системе уже есть некая идея разделяй и властвуй.Основное приложение (надо сказать, что это слой макета на данный момент) и под-приложения монтируются на разные фрагменты шаблона отдельно, который также предназначен для следующего преобразования интерфейса iframe и Micro, что снижает большую нагрузку.
На самом деле в такой архитектуре тоже есть некая тень микрофронтенда :).
iframe архитектура
Позже, с преобразованием серверных микросервисов, серверная часть больше не заботится об управлении маршрутизацией и монтировании страниц, а вместо этого предоставляет больше атомарных микросервисов. И для нашего интерфейса:
- Нет необходимости полагаться на бэкэнд-шаблоны;
- Необходимо управлять и контролировать маршрутизацию и формулировать единые правила маршрутизации;
- Изоляция песочницы главного приложения;
- Постарайтесь свести к минимуму изменения в подбизнесах, многие бизнесы несут тяжелое бремя;
- Быстрая посадка и высокая доступность (ни в коем случае, время разработки всегда важнее многих вариантов...);
Но с приездом и последующими итерациями архитектуры IFrame мы также нашли некоторые недостатки сценариев IFrame:
- Метод связи прост, а простой API для почтовых сообщений не может удовлетворить потребности бизнеса;
- Стили разделены, и iframe приведет к тому, что глобальные маски, такие как Dialog, будут отображаться только в блоке ifame, что делает нашу систему более похожей на «лоскутное одеяло»;
- Узкое место в производительности, переключение маршрутов вызовет перезагрузку подприложений в iframe, а производительность вызывает беспокойство;
- Междоменная проблема, политика того же сайта в chrome80 приведет к тому, что междоменный файл cookie схемы iframe не будет перенесен на серверную часть;
Архитектура микроинтерфейса
Наконец, в середине этого года я обновил архитектуру iframe до архитектуры сосуществования микро-интерфейса + iframe и разработал серию цепочек инструментов разработки, связанных с микро-интерфейсом (Xida Puben...).
Итак, почему нет iframe?
На мой взгляд, микро-фронтенд - это идея, эволюция способа разработки и архитектуры. Такие фреймворки, как qiankun и icestark, являются лишь реализацией реализации микро-фронтенда. Разумная реализация iframe - это не разновидность микро-фронтенда. завершение реализации. . Наш оригинальный дизайн архитектуры iframe также в определенной степени является своего рода идеей микро-интерфейса, и, на мой взгляд, iframe по-прежнему имеет естественное преимущество для таких гигантских межкомандных средних и серверных проектов. являются следующими:
- независимый от фреймворка: iframe загружает только ссылку развернутого приложения;
- автономная песочница: у iframe есть независимая песочница для браузера, а подприложению и основному приложению вообще не нужно учитывать загрязнение js&css;
- Для разработки простого: только тег iframe;
Тем не менее, это о некоторых болевых точках для IFrame:
- Плохой опыт пользовательского интерфейса
- Сложность общения: Побочным эффектом мощного механизма песочницы iframe является то, что между родительским и дочерним приложениями сложно общаться, трудно добиться только одного API-интерфейса postmessage, междоменных файлов cookie, промисов и т. д.;
- Долгое время для загрузки: Каждая запись суб-приложения представляет собой процесс реконструкции контекста браузера и перезагрузки ресурсов;
Хотя вышеперечисленные болевые точки более-менее сочетаются с некоторыми хак-инструментами и спецификациями разработки, есть определенные решения, но есть варианты получше, почему бы и не попробовать :)
Итак, что такое микрофронтенд?
Я не буду здесь говорить о понятиях, все понимают истину, и все понятия ищутся. Например, очень официальная интерпретация микроинтерфейса:
Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently
Точно так же, как монолитное приложение не создается за одну ночь, я познакомлю вас с микроинтерфейсом, который я понимаю, через эволюцию монолитного приложения.
одна страница
Сначала в нашей системе может быть только один бизнес-модуль. Маршрутизация жестко закодирована в проекте, а слой компоновки и бизнес-подсистема также написаны вместе.
несколько страниц
По мере роста бизнеса наша система получает доступ к большему количеству бизнес-модулей, фактически, на этот раз через определенную конфигурацию маршрута и настройку нескольких страниц, проект также по-прежнему не является большой проблемой.
Но в это время мы должны быть начеку: если подключено больше бизнес-модулей и они все еще остаются в текущем режиме, как поддерживать проект?
больше страниц? Боулдер приложение!
С дальнейшим ростом бизнеса становится доступным все больше и больше бизнес-модулей.Мы не только увеличиваем количество подприложений в навигационном измерении, но даже такие страницы, как домашняя страница, будут иметь блоки, принадлежащие нескольким бизнес-доменам. Подводя итог, можно разделить на два сценария:
- единственный экземпляр
-
Несколько экземпляров
Затем, если нет хорошего лечения и разделения подсистемы, то наше приложение станет применением валунов ...
- Часто в таких приложениях все делают сложение вместо вычитания, делая проект все больше и больше, и все больше и больше бесполезного кода...
Микро интерфейс, разделяй и властвуй!
В настоящее время мы часто делим систему на разные подприложения в соответствии с разделением бизнес-доменов, и мы разделяем уровень макета, несущий эти подприложения, на основное приложение, каждое подприложение разрабатывается и выпускается независимо, и поддерживается различными бизнес-командами.Таким образом, различные проблемы разработки и обслуживания, вызванные сложными монолитными приложениями, могут быть решены.
Как видно, микро передняя часть взята
- Независимость: основное приложение микро-интерфейса и каждое под-приложение разрабатываются и развертываются независимо друг от друга, и в определенной степени под-приложение микро-интерфейса может работать независимо от основного приложения;
- изоляция песочницы: субприложения имеют свои собственные отдельные среды выполнения, и состояние между каждым субприложением не является общим;
- независимый от фреймворка: Суб-приложения могут быть разработаны в разных каркасах, поскольку при внедрении существующей среды Micro-Frestend основное приложение загружает только пакеты, созданные поддержанными приложениями;
Наш выбор
Сейчас Micro Front-End Frame на рынке много, таких как внутренний Ali имел Icestark, Qiankun еще два зрелых передней панели с открытым исходным кодом для Micro и Singlespa Community. Итак, как мы выбираем Micro Framework Framework для нашего проекта, я просто перечисляю здесь некоторые из моего мышления в выборе фронтальных фреймов микросхем:
- стоимость изменения: Ни одна бизнес-команда не может уйти от этой темы, как вы убедите продукт и босса в том, что на техническую трансформацию уходит так много времени (все равно есть определенный риск), как вы убедите сторону субприложения сотрудничать с трансформацией ( поверьте мне, сторона суб-приложения не захочет этого делать) > 1 день реконструирован...);
- изоляция песочницы: Нечего сказать об этом, многие подприложения будут интегрировать свои собственные системы отслеживания и мониторинга, такие системы часто монтируют или перехватывают глобальные переменные;
- Инвариантность маршрутизации: В нашей архитектуре iframe уже есть относительно полный набор правил маршрутизации, так как же обновить архитектуру, не меняя маршрутизацию?
- Общение инвариантности: Как и выше, в нашей архитектуре iframe у нас уже есть набор относительно зрелых инструментов связи, поэтому можем ли мы завершить взаимодействие с микро-интерфейсом, оставив неизменным API? Или просто микрофронтенды могут использовать средства коммуникации iframe?
- Совместимость с фреймами: Такая огромная система не будет мигрировать на микро-фронтенд всю сразу, и мы не планируем отказываться от архитектуры iframe (не сможем мигрировать весь бизнес...). Итак, как обеспечить сосуществование двух архитектур? Кроме того, как обеспечить сосуществование двух архитектур и совместно использовать набор правил маршрутизации?
- Управление оттенками серого: Выпуск больших версий подприложений часто сопровождается управлением градациями серого, так как же обеспечить достижение полного процесса градаций серого после подключения микрофронтенда? Это инструмент контроля версий или напрямую использовать htmlEntry?
- Доступ к «древним» приложениям: Лучше всего держать iframe встроенным в древнее приложение, так можем ли мы поддерживать плавный доступ "Древнего Дракона" с небольшой долей жадности?
Наконец, учитывая некоторые мысли выше, а также нашу текущую системную архитектуру, я решил посадить qiankun на наше микроинтерфейсное решение. И для того, чтобы обеспечить удобство доступа к интерфейсу микро и контроля версий, мы добавили некоторый инструмент микроэкологической цепи интерфейса.
Эпилог
Вышеуказанная реформа в сочетании с интерфейсом Micro Business System, если я делаю, если что-то не так, пожалуйста, поправьте меня. Принципиальный анализ, то я буду разрешать вывод источника Цянькуна, а также какой-то инструмент Micro-Tip, который я сделал статьи (Sahua ...).
🏆 Технический специальный выпуск 4 | Расскажите о тех вещах, которые касаются микроинтерфейса...