О насБлогКонтакты
Разработка18 апреля 2026 г. 4 мин 2

Node.js vs Bun vs Deno 2026: какой JavaScript runtime выбрать

AunimedaAunimeda
📋 Содержание

Node.js vs Bun vs Deno 2026: какой JavaScript runtime выбрать

В 2026 году «JavaScript runtime = Node.js» уже не данность. Bun стабилен в production и реально быстрее. Deno 2.0 отказался от принципа «без npm» и поддерживает совместимость. Node.js 22 запускает TypeScript без транспиляции. Выбор стал содержательным.


Что изменилось в 2025-2026

Bun 1.0+ (релиз Sep 2023, production-стабилен с 2025):

  • Полная совместимость с npm-пакетами (>95% API)
  • Встроенный bundler, test runner, package manager
  • Движок JavaScriptCore (движок Safari, не V8)
  • Совместимость с Node.js API

Deno 2.0 (релиз Oct 2024):

  • Полная поддержка npm через спецификатор npm:
  • Режим совместимости с Node.js
  • Поддержка workspaces
  • Упрощённая модель разрешений

Node.js 22/23:

  • --experimental-strip-types: запуск .ts файлов напрямую
  • Зрелый встроенный test runner
  • V8 12.x с улучшенной производительностью
  • Компилятор Maglev по умолчанию

Бенчмарки HTTP-сервера

Минимальный HTTP-сервер, возвращающий { "hello": "world" }, на идентичном железе (8 ядер, 16GB RAM):

Runtime Запросов/сек Latency p99 Память
Bun 1.1 ~240 000 1.2мс 48 МБ
Node.js 22 (uWS) ~210 000 1.4мс 62 МБ
Node.js 22 (http) ~85 000 2.8мс 78 МБ
Deno 2.0 ~78 000 3.1мс 54 МБ
Node.js 20 (http) ~68 000 3.4мс 82 МБ

Для реальных фреймворков:

Фреймворк Runtime Запросов/сек
Bun native Bun ~240k
Elysia.js Bun ~220k
Hono Bun ~210k
Hono Node.js ~130k
Fastify Node.js ~115k
Express.js Node.js ~58k

Hono на Bun — оптимальный выбор для новых проектов, где важна производительность.


Скорость пакетного менеджера

Операция npm pnpm Yarn bun install
Холодная установка 28с 12с 14с 2.1с
С кэшем 18с 3.2с 4.1с 0.4с
Размер node_modules 340МБ 320МБ 330МБ 298МБ

bun install в ~14 раз быстрее npm при использовании кэша. В CI это ощутимо.


Поддержка TypeScript

Node.js 22 — экспериментальный strip types

# Работает без флагов только для простых случаев
node --experimental-strip-types server.ts

Ограничения: нет поддержки enum, экспериментальных декораторов, const enum. Буквально убирает аннотации типов. Для простых случаев — подходит.

Bun — TypeScript первого класса

# Работает без флагов
bun run server.ts
bun run server.tsx

Bun транспилирует TypeScript встроенным бандлером. Никакого tsc. Enum, декораторы — всё работает. Лучший опыт TypeScript-разработки.

Deno — TypeScript из коробки

deno run server.ts

Deno был первым с нативной поддержкой TypeScript. Полный функционал, strict mode по умолчанию.


Совместимость с экосистемой

Возможность Node.js Bun Deno
npm-пакеты Нативно 95%+ npm: спецификатор
CommonJS (require) Нативно Да Частично
ESM Да Да Нативно (обязательно)
__dirname Да Да Нет (используйте import.meta)
Worker Threads Да Да Да (Web Workers)
Нативные модули (.node) Да Ограниченно Нет

Важно: если используете нативные Node.js addons (sharp, better-sqlite3), Bun может не работать. Большинство чистых JS-пакетов работают нормально.


Модель безопасности

Node.js — нет изоляции по умолчанию

Полный доступ к системе. Любой установленный пакет может читать файлы, делать сетевые запросы, запускать процессы.

Deno — разрешения

# Явно указываем что разрешено
deno run --allow-net=api.example.com --allow-read=/tmp server.ts

# Попытка без разрешения = ошибка runtime

Главное преимущество Deno для ненадёжного кода.

Bun — нет изоляции по умолчанию

Аналогично Node.js.


Совместимость с фреймворками

Фреймворк Node.js Bun Deno
Express.js ✅ (npm:)
Fastify
NestJS ✅ (экспер.)
Next.js Нет
Prisma
Drizzle

Next.js на Bun работает. bun run next dev стартует заметно быстрее, чем npm run next dev.


Встроенные инструменты

Инструмент Node.js Bun Deno
Test runner node --test bun test deno test
Bundler Нет (webpack/esbuild) bun build deno bundle
TypeScript Экспериментально Нативно Нативно
Форматтер Нет Нет deno fmt
Линтер Нет Нет deno lint
Package manager npm bun install deno add

All-in-one тулчейн Deno исключителен для новых проектов. deno fmt + deno lint без конфигурации — реально приятно.


Когда что выбирать

Node.js:

  • Существующая production-кодовая база
  • Команда глубоко знает экосистему
  • Нативные addons (sharp, node-gyp)
  • Enterprise с требованиями к LTS-стабильности
  • NestJS при известных ops-паттернах

Bun:

  • Новый проект с требованиями к производительности
  • TypeScript-first разработка
  • Быстрее npm install в CI
  • Простое HTTP API где важен throughput
  • Уже используете Hono или Elysia

Deno:

  • Безопасность — первый приоритет
  • Edge/serverless (Deno Deploy, Netlify Edge)
  • Скрипты с нулевой конфигурацией
  • Framework Fresh (собственный веб-фреймворк Deno)
  • Нужен встроенный formatter/linter

Миграция с Node.js на Bun

Большинство Node.js приложений запустятся на Bun с минимальными изменениями:

# Замена пакетного менеджера
bun install   # вместо npm install

# Запуск скриптов
bun run dev   # вместо npm run dev

# Что может сломаться:
# 1. Нативные addons — проверьте совместимость с Bun
# 2. Edge cases в Node.js stream API
# 3. Некоторые случаи package.json "exports"

Практичный подход: запустите тест-сьют на Bun. Если проходит — приложение скорее всего заработает.


Вывод

Для новых production-проектов в 2026: Bun для API и backend-сервисов где вы управляете стеком, Node.js где нужна максимальная совместимость с экосистемой.

Для существующих проектов: оставайтесь на Node.js если нет конкретных проблем (медленный CI, требования к throughput).

Для edge/serverless: Deno Deploy или Cloudflare Workers — лучше справляются с холодным стартом чем Node.js Lambda.


Aunimeda строит высокопроизводительные backend-системы на Node.js и Bun. Обсудим задачу.

Смотрите также: OWASP Top 10 безопасность, WebSocket 100k соединений

Читайте также

State of JavaScript 2026: что изменилось и куда движется экосистемаaunimeda
Разработка

State of JavaScript 2026: что изменилось и куда движется экосистема

Vite обошёл webpack. TypeScript — дефолт для новых проектов. React сохраняет доминирование, но Signal-based фреймворки растут. AI-assisted coding меняет что значит 'написать код'. Честный разбор состояния JavaScript-экосистемы в 2026.

Supabase vs Firebase 2026: честное техническое сравнениеaunimeda
Разработка

Supabase vs Firebase 2026: честное техническое сравнение

Supabase стабилен в production. Firebase зрел и масштабируется. PocketBase — один бинарник. Разбираем модели данных, аутентификацию, realtime, цены при росте и когда каждый вариант имеет смысл для российских проектов.

Чистая архитектура в Node.js: практическое руководство без академизмаaunimeda
Разработка

Чистая архитектура в Node.js: практическое руководство без академизма

Чистая архитектура звучит хорошо в теории. На практике большинство реализаций добавляют сложность без пользы. Показываем паттерн, который реально работает в production Node.js TypeScript проектах — инверсия зависимостей, use cases, repository pattern с рабочим кодом.

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в России. Бесплатная консультация.

Получить консультацию Все статьи