Настольные приложения
deno desktop превращает проект Deno (от одного файла TypeScript до приложения Next.js) в автономное настольное приложение. Результат — распространяемый бинарный файл, который объединяет ваш код, среду выполнения Deno и механизм веб-рендеринга в один пакет для каждой платформы.
deno desktop доступен начиная с Deno v2.9.0. Если у вас более ранняя версия, обновите Deno, чтобы использовать его.
Почему deno desktop
Веб-технологии — самый распространённый в мире инструментарий для создания пользовательских интерфейсов. Настольные приложения на веб-стеке (Electron, Tauri, Electrobun) используют это преимущество, но у каждого решения есть компромиссы, с которыми придётся смириться: огромные бинарные файлы, отсутствие поддержки некоторых платформ, несовместимость с экосистемой JavaScript, отсутствие встроенного механизма обновления, интеграции с фреймворками.
deno desktop предлагает собственный подход к этим компромиссам:
- Компактность по умолчанию и полная совместимость с Node. По умолчанию бэкенд WebView использует встроенное в операционную систему веб-представление, что позволяет создавать компактные бинарные файлы, а экосистема npm целиком доступна через слой совместимости Deno с Node. Если вам нужно одинаковое отображение в macOS, Windows и Linux, выберите бэкенд со встроенным Chromium (CEF).
-
Автоматическое определение фреймворка. Укажите
deno desktopна проект Next.js, Astro, Fresh, Remix, React Router, Nuxt, SvelteKit, SolidStart, TanStack Start или Vite SSR — и он запустится: производственный сервер в режиме релиза, сервер разработки с горячей перезагрузкой в--hmr. Для большинства фреймворков не нужен специальный адаптер; требования для каждого фреймворка см. в разделе Фреймворки. - Связь внутри процесса вместо IPC. Взаимодействие бэкенда с интерфейсом осуществляется через каналы внутри процесса, а не через IPC на основе сокетов. Данные по-прежнему кодируются при пересечении границы вызова, но между кодом Deno и веб-представлением нет перехода между процессами.
- Кросс-компиляция на одном компьютере. Один и тот же компьютер может собирать приложения для macOS, Windows и Linux. Бэкенды загружаются по мере необходимости, а не собираются локально.
-
Встроенное автоматическое обновление с бинарными дельтами. Поставляйте один манифест
latest.jsonи патчи bsdiff; среда выполнения автоматически проверяет обновления, применяет их и выполняет откат, если запуск не удался.
Привет, настольное приложение
Создайте настольное приложение в одном файле:
Deno.serve(() =>
new Response("<h1>Hello, desktop</h1>", {
headers: { "content-type": "text/html" },
})
);
deno desktop main.ts
Скомпилированный бинарный файл открывает окно, указывающее на локальный HTTP-сервер, привязанный к обработчику Deno.serve(). Запустите его напрямую:
./main # macOS / Linux
.\main.exe # Windows
Deno.serve() автоматически привязывается к адресу, по которому веб-представление выполняет переход, поэтому передавать порт или имя хоста не нужно. Подробнее см. в разделе Обслуживание HTTP-запросов.
Полный пример
Полный пример реального приложения, созданного с помощью deno desktop, см. в проекте denidian: это приложение для заметок в стиле Obsidian с заметками в формате Markdown, перекрёстными ссылками [[wikilink]] и графом с силовой компоновкой. Оно намеренно сделано компактным — один HTTP-сервер Deno и фронтенд на обычных HTML/CSS/JS — и охватывает управление окнами с помощью Deno.BrowserWindow, меню приложения, разработку --hmr и подготовку пакета для распространения.
Содержание этого раздела
-
Конфигурация: блок
desktopвdeno.json. - Бэкенды: CEF, webview, raw; как выбрать.
-
Обслуживание HTTP-запросов: интеграция с
Deno.serve()и модель обслуживания. - Фреймворки: Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit и другие.
-
Окна: жизненный цикл
Deno.BrowserWindow, несколько окон, события. - Рендеринг WebGPU: отрисовка в нативном окне с помощью WebGPU на бэкенде raw.
-
Связи: вызов кода Deno из веб-представления через
bindings.<name>(). - Меню: меню приложения и контекстные меню.
- Системный трей и док: системные значки состояния и док macOS.
-
Диалоговые окна:
prompt(),alert(),confirm()в виде нативных всплывающих окон. -
Уведомления: системные уведомления через API Web
Notification. -
Горячая замена модулей:
--hmrдля приложений с фреймворками и без них. - DevTools: единые DevTools, подключённые и к среде выполнения Deno, и к веб-представлению.
-
Автоматическое обновление:
Deno.autoUpdate(), манифесты, bsdiff, откат. - Отчёты об ошибках: перехват необработанных исключений и паник.
- Распространение: кросс-компиляция, форматы вывода, установщики.
-
Сравнение: как
deno desktopсоотносится с Electron, Tauri, Electrobun и Dioxus. -
Справочник по CLI
deno desktop: команда, её флаги и схемаdeno.jsondesktop.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/desktop