В новом мире разработчиков интерфейсов доминируют одностраничные приложения, созданные с использованием различных JavaScript, таких как Angular, React, Vue.js и т. д., особенно корпоративные приложения, управляемые данными.

Подход, заключающийся в том, что код пользовательского интерфейса изолирован от любого внутреннего кода или логики, является замечательным, что продвигается всеми SPA-платформами/библиотеками (одностраничное приложение), но это не означает, что приложение, которое вы строят, никогда не будет проблем с раздуванием или невозможностью обслуживания.

Что произойдет, когда:

  • Вы хотите работать с несколькими командами, у которых не будет доступа к вашей кодовой базе.
  • Вы хотите использовать несколько фреймворков/библиотек (скажем, Angular и ReactJs)
  • Вы хотите динамически загружать разные приложения в зависимости от типа пользователя.
  • Вы хотите создать приложение в разных вариантах

В этом примере мы создадим микроинтерфейсное приложение с несколькими командами и несколькими строками настройки.

Предпосылки:

Создание пустой рабочей области NX

Давайте создадим рабочее пространство NX для работы и назовем его micro-frontend:

npx create-nx-workspace@latest micro-frontend

Команда create-nx-workspace попросит вас выбрать предустановку, которая настроит некоторые плагины и создаст ваши приложения, которые помогут вам начать работу.

? What to create in the new workspace (Use arrow keys)
❯ apps [an empty workspace with no plugins with a layout that works best for building apps]

Когда представлены интерактивные параметры, выберите пустую рабочую область.

Создать приложение Angular HOST & REMOTE

Предпосылкой для создания хоста Angular является наличие пакета @nrwl/angular внутри рабочей области. Давайте установим пакет nrwl с помощью следующей команды

npm install — save @nrwl/angular

Перед установкой убедитесь, что вы находитесь в каталоге «micro-frontend».

Используйте следующую команду для создания нового приложения Angular с использованием NX:

npx nx generate @nrwl/angular:application --name=angularHost --style=scss --port=4200 --e2eTestRunner=none --linter=none --mfe --mfeType=host --unitTestRunner=none --no-interactive

Создайте удаленное приложение Angular с помощью следующей команды:

npx nx generate @nrwl/angular:application --name=angularRemote --style=scss --port=4199 --e2eTestRunner=none --host=angular-host --linter=none --mfe --routing --unitTestRunner=none --no-interactive

После завершения установки вы сможете запустить оба приложения, используя следующую команду:

nx run angular-host:serve-mfe

Известная ошибка. На момент написания этой статьи известно, что Webpack не устанавливается по умолчанию. Чтобы устранить эту проблему, удалите каталог node_modules и файл package-lock.json и повторите npm install.

Добавьте эту конфигурацию маршрутизатора в app.module.tsв «/angular-host/src/app/».

RouterModule.forRoot([{
  path: '',
  loadChildren: () =>
    import('angular-remote/Module').then((m) =>m.RemoteEntryModule),
}])

Добавьте <router-outlet></router-outlet> внутрьapp.module.html, чтобы убедиться, что удаленное угловое приложение загружается в хост-приложение.

Вот и все! У нас есть основная схема работающего микроинтерфейса.

Вы можете получить репозиторий здесь: https://github.com/ssunils/micro-frontend-example.

Создавайте микроинтерфейсы с компонентами

Как и микросервисы, микроинтерфейсы — это отличный способ ускорить и масштабировать разработку приложений благодаря независимым развертываниям, несвязанным кодовым базам и автономным командам.

Инструменты OSS, такие как Bit, предлагают отличный опыт разработчика для создания интерфейсов Micro на основе компонентов. Создавайте компоненты, сотрудничайте и создавайте масштабируемые приложения. Попробуйте →