Spec-Zone.ru › Deno 2

Настольные приложения

deno desktop превращает проект Deno (от одного файла TypeScript до приложения Next.js) в автономное настольное приложение. Результат — распространяемый бинарный файл, который объединяет ваш код, среду выполнения Deno и механизм веб-рендеринга в один пакет для каждой платформы.

Доступно в Deno 2.9

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; среда выполнения автоматически проверяет обновления, применяет их и выполняет откат, если запуск не удался.

Привет, настольное приложение

Создайте настольное приложение в одном файле:

main.ts
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.json desktop.

Последнее обновление: 27 июля 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/desktop

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API