/parent-service

Little test of the micro frontend architecture

Primary LanguageJavaScript

Тестовое приложение на микрофронтендах

Обзор

Приложение - фронтенд для Space Traders, симулятора торговли в космосе.

Установка

Все четыре модуля находятся в одном репозитории, но ставятся отдельно (yarn install надо делать в каждой из директорий). Модули не включают напрямую код из других модулей (при более основательной настройке шарить надо будет только типы).

Контейнер запускается из директории container-service командой yarn start.

API-модуль запускается из директории fleet-api командой yarn start --port 8500.

Модули микрофронтендов запускаются из frontend-module и navigation-module командой yarn serve.

Стек:

  • SingleSPA для контейнера и создания приложений/вспомогательных модулей
  • openapi-generator-cli для автоматической генерации методов по документации OpenAPI
  • Vue для приложений
  • Typescript
  • Webpack для сборки микрофронтендов

Модули

fleet-api

Сгенерированный модуль для обращения к API SpaceTraders. Тип генерации: typescript + fetch. Отдаёт наружу экземпляр менеджера данных. Кеширует данные и частично перезаписывает кеши если обновляется только часть сущности. Например, waypoint-ы системы запрашиваются один раз и кешируются. Данные корабля кешируются и если меняются только навигационные данные, кеш обновляется с учётом изменений.

frontend-module

Модуль информации о корабле. Управляет стыковкой/расстыковкой. Включает в себя список предметов в трюме. Подписан на изменения уровня топлива, текущей системы и статуса корабля (меняются при начале навигации из модуля navigation-module). Использует vue как общую зависимость.

Размер при включенном vue: 234 kB Размер при общем vue: 153 kB

navigation-module

Модуль навигации. Показывает список waypoint-ов в текущей системе и позволяет передвигаться между ними. Подписан на изменения статуса корабля (запрещает навигацию если корабль пристыкован или уже в движении). Использует vue как общую зависимость.

Размер при включенном vue: 232 kB Размер при общем vue: 151 kB

Vite

В папке frontend-service лежит модуль, собираемый Vite. Добиться правильной сборки в виде пока не удалось, не хватило времени донастроить плагин.

Заметки

Заметки о встреченных проблемах лежат в notes.