Dev Server, Live Reload, Hot Reload
Архитектура без реализации. Цель — быстрая итерация без постоянной пересборки пакета.
В режиме разработки веб-приложение грузится не из пакета, а с локального Dev Server, что радикально ускоряет цикл «изменил → увидел». Поддерживаются две степени обновления: Live Reload и Hot Reload.
1. Общая схема
Машина разработчика Устройство/эмулятор Аврора
┌──────────────────────────┐ ┌──────────────────────────────┐
│ Dev Server (http://host) │ WebView │ Runtime (dev-сборка) │
│ ├─ раздаёт веб │◀──────────────▶│ └─ WebView грузит с Dev │
│ ├─ watcher исходников │ reload/HMR │ Server вместо пакета │
│ └─ канал обновлений (ws) │ │ │
└──────────────────────────┘ └──────────────────────────────┘Запуск: aurobore dev (алиас bor dev) — поднимает Dev Server, собирает/устанавливает лёгкую dev-сборку контейнера (с указанием грузить приложение с Dev Server) и запускает её на эмуляторе/устройстве.
2. Dev Server
- Локальный HTTP-сервер, раздающий веб-приложение (часто — поверх dev-сервера сборщика пользователя, например Vite, либо собственный статический сервер).
- Доступен устройству/эмулятору по сети (адрес хоста, не
localhostустройства). - Отдаёт также bridge-скрипт и реестр плагинов, согласованные с dev-контейнером.
- Учитывает Asset Loader: в dev источник — http, в prod — безопасная схема.
3. Live Reload
- При изменении исходников watcher уведомляет WebView → полная перезагрузка страницы.
- Грубее, но надёжнее: гарантированно отражает любые изменения (включая то, что не поддерживает HMR).
- Состояние приложения теряется (это ожидаемо).
4. Hot Reload (HMR)
- Обновление отдельных модулей без полной перезагрузки и без потери состояния (FR-C7, SHOULD).
- Реализуется преимущественно средствами веб-сборщика (HMR Vite/Webpack) — Aurobore их не дублирует, а интегрирует: dev-контейнер не мешает HMR-каналу сборщика.
- Откат к Live Reload, если модуль не поддерживает горячую замену.
5. Особенности dev-режима
- Изменения веба — мгновенно (reload/HMR), без пересборки пакета.
- Изменения нативной части/плагинов требуют пересборки и переустановки dev-контейнера (нативный код нельзя «горячо» заменить на устройстве).
- DevTools (SHOULD): лог bridge-вызовов и событий в реальном времени, инспекция аргументов/ответов, тайминги (FR-D3).
- Прокидывание консоли веб-приложения в лог CLI для удобной отладки.
6. Сеть и безопасность в dev
- Dev-режим явно отделён от prod: дополнительные источники (Dev Server) разрешены только в dev-сборке.
- Понятная диагностика типичных проблем: устройство не видит хост, неверный порт, файрвол.
7. Browser mock mode (dev --web, FR-C12)
Альтернатива эмуляторному циклу для веб-разработки без SDK:
Desktop browser Dev Server (127.0.0.1)
┌─────────────────────────┐ ┌──────────────────────────┐
│ Web app + HMR │◀──────▶│ Vite / esbuild / static │
│ aurobore-bridge-web.js │ │ + injected bridge/plugins │
│ loopback + mock plugins │ │ + /app-data/fixtures │
└─────────────────────────┘ └──────────────────────────┘- Запуск:
aurobore dev --web— без сборки/деплоя dev-контейнера. - Транспорт:
LoopbackTransport(@aurobore/bridge-js) вместоWebViewTransport. - Mock native:
packages/core/src/mocks/— все 11 встроенных плагинов. - HTML: автоматическая инъекция bridge-скриптов (в т.ч. для React/Vue SPA без тегов в шаблоне).
- Подробнее: web-mock-mode.md.
8. Связи
- ↔ Runtime — dev-контейнер грузит веб с Dev Server.
- ↔ Build System — dev-сборка контейнера.
- ↔ CLI — команда
dev. - ↔ Bridge — bridge-скрипт согласован между dev-контейнером и Dev Server.