Встречайте новую среду выполнения JavaScript — Bun.sh. Кто-то скажет, что это был задуман как снайперский выстрел в Node. Для разработчиков, которые работают со стеком ME(A/R/S)N, Bun.sh просто заменил Node и пригласил супермена для выполнения той же работы. Разница между Bun и Node в том, что Bun — это не только среда выполнения, но и сборщик задач, компилятор TS и все в одном месте.

Кто-то скажет, что Deno уже существует, но в этом случае я бы поспорил относительно показателей производительности. Самое приятное то, что Bun поддерживает API-интерфейсы узлов и предназначен для полной замены NodeJS. В настоящее время цель состоит в том, чтобы обеспечить эффективную и производительную работу большей части серверного JS.

Вот некоторые особенности Bun, извлеченные из их документации:

  • Скорость. Процессы Bun сейчас запускаются в 4 раза быстрее, чем Node.js (попробуйте сами!)
  • Поддержка TypeScript и JSX. Вы можете напрямую выполнять файлы .jsx, .ts и .tsx; Транспилятор Бана преобразует их в стандартный JavaScript перед выполнением.
  • Совместимость ESM и CommonJS. Мир движется к модулям ES (ESM), но миллионы пакетов на npm по-прежнему требуют CommonJS. Бан рекомендует модули ES, но поддерживает CommonJS.
  • API, соответствующие веб-стандартам. Bun реализует стандартные веб-API, такие как fetch, WebSocket и ReadableStream. Bun работает на движке JavaScriptCore, разработанном Apple для Safari, поэтому некоторые API, такие как Headers и URL, напрямую используют реализацию Safari.
  • Совместимость Node.js. Помимо поддержки разрешения модулей в стиле Node, Bun стремится обеспечить полную совместимость со встроенными глобальными переменными Node.js (process, Buffer) и модулями (path, fs, http и т. д.) Это текущая работа, которая еще не завершена. Текущий статус см. на странице совместимости.

Быстрый старт проекта Bun

Запустите bun init, чтобы создать новый проект.

Откройте index.ts и вставьте следующий фрагмент кода — это для простого HTTP-сервера.

const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Bun!");
  },
});

console.log(`Listening on http://localhost:${server.port} ...`);

Запустите файл, используя bun index.ts . Вы должны увидеть простую страницу с надписью «Булочка!».

Для получения более подробной информации о Bun и его экосистеме посетите https://bun.sh/docs.

Ковабанга — Т