Deno 2.9: революция десктопной веб-разработки и бесшовный переход с Node.js
Выход версии Deno 2.9 знаменует собой важнейший этап в эволюции среды выполнения JavaScript. Разработчики представили две возможности, которые меняют создание клиентских приложений и процесс миграции проектов из экосистемы Node.js. Главным событием релиза стала экспериментальная технология deno desktop, предлагающая легковесную альтернативу тяжелому Electron. Вторым нововведением стала нативная поддержка lock-файлов популярных пакетных менеджеров, что устраняет барьеры на пути к переходу с Node.js и Bun.
Deno Desktop: легковесная альтернатива Electron и Tauri
Создание настольных приложений на базе веб-технологий (HTML, CSS и JavaScript) долгое время ассоциировалось с Electron. Однако эта платформа имеет недостаток: каждое приложение несет в себе полноценный браузер Chromium и среду Node.js. В результате даже простая программа весит более 100 МБ в упакованном виде и потребляет сотни мегабайт оперативной памяти после запуска. Альтернативные решения, такие как Tauri, используют системный WebView, но требуют написания бэкенд-логики на Rust, что повышает порог входа.
Технология deno desktop решает эту проблему. Она позволяет собирать нативные настольные приложения, используя веб-стек для интерфейса и Deno для бэкенд-логики, компилируя всё это в один компактный исполняемый файл.
Архитектура deno desktop связывает встроенный веб-сервер Deno.serve напрямую с окном системного WebView. Бэкенд-логика выполняется в окружении Deno на базе движка V8, а пользовательский интерфейс рендерится с помощью системного веб-движка. Для разработчика это означает сохранение привычного рабочего процесса: UI пишется на любом фронтенд-фреймворке, а взаимодействие с файловой системой или сетью происходит через безопасные API Deno.
Статистика производительности нового решения Deno 2.9 выглядит следующим образом:
- Время холодного старта (Cold Start): сократилось вдвое — с 34.2 мс до 17.3 мс. Приложение открывается практически мгновенно.
- Производительность сетевого слоя (Deno.serve): скорость обработки запросов выросла с 56.8k до 72.4k запросов в секунду (req/s).
- Потребление оперативной памяти (RSS): средний объем потребляемой памяти снизился со 142 МБ до 64 МБ.
- Поддерживаемые платформы (Targets): поддерживается кросс-компиляция для Linux (x64/arm64), Windows (x64) и macOS (x64/Apple Silicon).
Нулевая миграция с Node.js и Bun: поддержка lock-файлов
Исторически Deno продвигал импорт модулей напрямую через URL, в то время как Node.js и Bun полагались на реестр npm и локальные директории node_modules. Перенос крупного проекта на Deno требовал переписывания импортов и конфигураций.
Теперь Deno делает процесс миграции простым. Утилита deno install научилась нативно распознавать и читать lock-файлы (файлы блокировки, которые фиксируют точные версии всех установленных зависимостей проекта для гарантирования стабильности сборок) всех популярных пакетных менеджеров:
package-lock.json(пакетный менеджер NPM в Node.js);pnpm-lock.yaml(менеджер PNPM);yarn.lock(менеджер Yarn);bun.lockb(двоичный формат lock-файла среды Bun).
При запуске команды установки в директории существующего проекта Deno считывает этот файл, автоматически сопоставляет зависимости с реестром npm и генерирует собственный совместимый lock-файл deno.lock. Разработчикам больше не нужно вручную переопределять версии или переписывать конфигурационные файлы зависимостей — переход происходит в одну команду.
Дополнительные возможности релиза Deno 2.9
Помимо двух главных столпов, релиз содержит ряд других важных улучшений, повышающих удобство разработки:
- Поддержка CSS-модулей (CSS Modules): теперь разработчики могут напрямую импортировать стилей в JavaScript-код. Эта функция пока скрыта за флагом экспериментальных возможностей
--unstable-raw-imports, но она значительно упрощает интеграцию современных UI-библиотек. - Оптимизация тестового раннера: встроенный инструмент для запуска тестов получил прирост скорости работы и улучшенное отображение покрытия кода тестами.
- Совместимость с Node.js 26: Deno 2.9 поддерживает новейшие стандарты и API среды выполнения Node.js 26, что гарантирует работу кода из экосистемы Node.js без изменений.
Практическое руководство: как установить Deno 2.9 и собрать настольное приложение
Ниже представлена пошаговая инструкция, которая поможет вам обновиться до Deno 2.9, развернуть простое приложение с графическим интерфейсом и скомпилировать его.
Предварительные требования (Prerequisites)
Перед началом работы убедитесь, что у вас есть доступ к терминалу (командной строке) и стабильное интернет-соединение для скачивания зависимостей.
Шаг 1. Установка или обновление Deno
Если у вас уже установлен Deno, обновите его до последней версии с помощью встроенной команды:
deno upgrade
Если вы устанавливаете Deno впервые, выполните соответствующую команду для вашей операционной системы:
- Для macOS и Linux (используется bash-скрипт установки):
Официальный веб-ресурс со скриптом установки: Deno Installation Guide
curl -fsSL https://deno.land/install.sh | sh - Для Windows (используется PowerShell):
iwr https://deno.land/install.ps1 -useb | iex
Шаг 2. Создание простого приложения
Создайте новый текстовый файл с именем main.ts в пустой рабочей директории. Этот файл будет служить точкой входа (entrypoint) для нашего приложения. Напишите в нем код простейшего веб-сервера с использованием стандартного API Deno.serve:
// main.ts
Deno.serve((_req) => {
return new Response("<h1>Привет из Deno Desktop!</h1>", {
headers: { "content-type": "text/html; charset=utf-8" },
});
});
Шаг 3. Запуск и сборка в режиме Deno Desktop
Чтобы запустить созданное приложение в режиме настольного окна с поддержкой автоматической перезагрузки кода при изменениях (Hot Module Replacement, HMR), выполните следующую команду в терминале:
deno desktop --hmr main.ts
После запуска откроется нативное окно операционной системы, отображающее HTML-ответ от нашего сервера.
Чтобы скомпилировать приложение в один исполняемый файл для вашей текущей операционной системы, выполните команду сборки:
deno desktop main.ts
Если вам необходимо собрать приложение для других операционных систем (кросс-компиляция), используйте флаг --target с указанием платформы (например, x86_64-pc-windows-msvc для Windows), либо соберите бинарные файлы для всех поддерживаемых платформ одновременно:
deno desktop --all-targets main.ts
Шаг 4. Проверка корректности работы (Verification)
Для подтверждения успешной сборки выполните следующие действия:
- Убедитесь, что в директории проекта автоматически создался файл блокировки
deno.lock. - Проверьте появление скомпилированного исполняемого файла в вашей директории (например,
mainдля Linux/macOS илиmain.exeдля Windows). - Запустите собранный файл напрямую из терминала или двойным кликом. Убедитесь, что графическое окно приложения открывается мгновенно и корректно отображает интерфейс.
Важные риски, ограничения и меры предосторожности
- Экспериментальный статус: технология
deno desktopна данный момент находится в статусе экспериментальной (experimental). Не рекомендуется использовать ее для критически важных продуктов без глубокого предварительного тестирования. - Зависимость от системного WebView: по умолчанию размер итогового бинарного файла составляет всего около 15-20 МБ, так как приложение использует системный движок рендеринга. Однако это означает, что поведение интерфейса может незначительно отличаться на разных версиях Windows, macOS и Linux.
- Использование CEF (Chromium Embedded Framework): для обеспечения 100% идентичности рендеринга на всех компьютерах вы можете упаковать движок Chromium с помощью флага
--backend cef. Обратите внимание, что это приведет к резкому увеличению размера итогового исполняемого файла (более 100 МБ), сводя на нет преимущество в легковесности. - Безопасность импортов: при использовании CSS-модулей помните, что они требуют флага
--unstable-raw-imports. Будьте осторожны при подключении внешних стилей из непроверенных источников.
Ознакомиться со всеми деталями релиза и официальной документацией по разработке настольных приложений можно по следующим ссылкам:

