Перейти к основному содержимому

Оболочка Tauri

Десктопная оболочка построена на Tauri 2. Она владеет нативным окном, запускает backend и гарантирует, что оба завершаются вместе.

Работа оболочки

Оболочка делает три вещи:

  1. Порождает sidecar — запускает самодостаточный процесс backend на Node.js и ждёт готовности локального API перед открытием webview. Вы никогда не видите наполовину загруженное окно, указывающее на мёртвый сервер.
  2. Размещает webview — продакшн-веб-приложение работает внутри webview Tauri и общается с backend через 127.0.0.1 на случайном свободном порту.
  3. Владеет жизненным циклом — события окна и процесса связаны так, что backend и оболочка всегда завершаются как одно целое.

Жизненный цикл окна

  • Закрытие — закрытие окна запускает корректное завершение sidecar. Backend просят остановиться чисто, и приложение ждёт его перед выходом. Осиротевшего процесса Node.js не остаётся.
  • Сбой backend — если sidecar выходит неожиданно, оболочка завершается с ошибкой вместо окна, которое ничего не может сделать. Обычные выходы помечаются отдельно, поэтому чистое завершение никогда не принимается за сбой.
  • Перезапуск — повторный запуск приложения заново порождает sidecar с нуля. Состояние живёт в каталоге данных, а не в процессе, поэтому перезапуски без потерь.

Окно и есть API

Поскольку оболочка ждёт API перед показом контента, первый запуск ощущается мгновенным: окно открывается на готовом приложении. Backend слушает только 127.0.0.1 на эфемерном порту, поэтому в сеть ничего не выставляется.

Интеграция обновлений

Релизные сборки интегрируют апдейтера Tauri. Оболочка может проверять обновления ядра, проверять манифест и подпись minisign, устанавливать артефакт платформы и перезапускаться. Апдейтер заменяет ядро отдельно от каталога данных пользователя, а неподписанные даунгрейды отклоняются. Сборки без конечной точки обновлений и публичного ключа полностью функциональны, но сообщают, что обновления не настроены.

Сборки для разработки

Для разработки та же оболочка может работать против dev-сервера и локально запущенного backend. Продакшн-гарантия — sidecar завершается вместе с окном — применяется к упакованным сборкам; pnpm desktop:dev подключает оболочку к вашим запущенным dev-процессам.

О том, как sidecar упаковывается и управляется, см. Sidecar на Node.js.