Наконец-то что-то новое в экосистеме JavaScript.

После стольких лет использования Node.js наконец-то появилась конкуренция. Бун теперь общедоступен. Он описывает себя как быструю универсальную среду выполнения JavaScript. Так же, как Node.js? — Нет, не как в Node.js. В этой истории есть нечто большее.

Роль Node.js сегодня.

Когда я вспоминаю, когда впервые начал писать код на JavaScript, это был совершенно другой мир. JavaScript использовался в браузерах, чтобы сделать веб-сайты более интерактивными и современными. Когда вы открываете веб-страницу, код JavaScript должен интерпретироваться вашим браузером, а точнее движком JS вашего браузера. В браузерах на базе Chromium это движок V8, в Safari — движок JavaScriptCore, а в Firefox — SpiderMonkey. NodeJS использовал движок Google V8 для предоставления среды выполнения JavaScript для настольных компьютеров и серверов. В двух словах: Node.js позволяет выполнять JavaScript вне браузера. Рано или поздно все больше и больше людей начали использовать JavaScript и для серверной разработки.

Поскольку в Node.js также входит менеджер пакетов (npm — менеджер пакетов узла), который помогает управлять внешними зависимостями ваших проектов узла, за последние годы вокруг Node.js и npm выросла целая экосистема JS. В основном реестре npm доступно более 1,3 миллиона пакетов. Это делает разработку нового программного обеспечения на JavaScript такой удобной. Существует библиотека почти для всего, что вы можете себе представить. — Зачем тебе что-то еще?

А Дено?

Возможно, вы слышали о конкуренте Node.js, выпущенном в 2020 году, под названием Deno. Он также использует движок Google V8, но использует собственный менеджер пакетов, который несовместим с пакетами NPM. Но у него определенно есть свои сильные стороны. Deno имеет функции песочницы, поддерживает TypeScript из коробки и солидный набор стандартных пакетов. Тем не менее, Deno пока не считается настоящим конкурентом Node.js. Самым большим недостатком является потеря 1,5 миллиона пакетов узлов. На данный момент доступно только около 5000 модулей Deno. И нет ничего необычного, что убедило многих пользователей рассматривать Deno как надежную альтернативу Node.js.

Бун вошёл в чат.

Bun — это недавно выпущенная среда выполнения JavaScript, которая, в отличие от Node.js и Deno, использует движок JavaScriptCore, а не движок V8. Это одна из многих причин, по которым Бан утверждает, что работает намного быстрее, чем NodeJS и Deno. Кроме того, Bun написан на Zig, низкоуровневом языке программирования, используемом для оптимизации каждой части Bun.

Bun доступен в публичной бета-версии с начала июля 2022 года. Но я уже несколько месяцев участвую в закрытой бета-версии. И да, даже в бета-версии он делает разработку JS намного быстрее и веселее по сравнению с Node.js. Но это не только из-за его скорости выполнения. Бан также является клиентом NPM. Он совместим почти со всеми пакетами npm. Вы, наверное, знаете, как раздражает ожидание завершения npm install. Решение простое, с Баном вы этого не испытаете. В проектах, на которых я тестировал его, он часто был в 2 раза быстрее, чем npm i, и в 1,6 раза быстрее, чем yarn.

Кроме того, Bun — это транспилятор JavaScript. Он понимает TypeScript и JSX из коробки. Но как насчет объединения ваших файлов, например, с помощью Webpack? — В Bun также включен собственный сборщик JS. Это молниеносно, но, возможно, ему не хватает некоторых функций для людей, использующих более продвинутые функции сборщика.

Самая сильная сторона Bun — прирост производительности при сохранении поддержки большинства пакетов NPM.

Как проверить Бан? — Создайте приложение React с помощью Bun.

  1. Установите bun на Mac (M1, x64), Linux (x64) или в WSL
    curl https://bun.sh/install | bash
    Всегда проверяйте исходный код скрипта перед выполнением.
  2. Создайте новый реактивный проект
    bun create react ./bun-react-playground
  3. Запустите приложение реагирования
    cd bun-react-playground
    bun dev

На создание проекта и запуск сервера разработки у меня ушло 1182,02 мс.

Ознакомьтесь с документацией и официальным сайтом.

Это конец Node.js?

Пока нет — с ним можно повозиться для личных проектов, но пока не для бизнеса. Впереди еще долгий путь, но я надеюсь, что в будущем все больше людей будут использовать Bun в качестве альтернативы Node.js, чтобы он получил необходимую стабильность и поддержку. Его производительность и возможности просто на другом уровне. Мои личные особенности заключаются в следующем:

  • Бан автоматически загружает .env файлов
  • TypeScript и JSX просто работают (даже поддержка .tsconfig)
  • Веб-API, такие как fetch и WebSocket, встроены (пока-пока-выборка узла)

Я использую Bun для некоторых своих личных проектов, и мне это очень нравится. Предстоит еще некоторая полировка, но он уже чрезвычайно стабилен, и совместимость до сих пор была для меня отличной. Единственное, для чего мне все еще приходится использовать Node.js, — это разработка NestJS, потому что NestCLI использует исполняемый файл узла, и есть некоторые общие проблемы.



Заинтересованы в приложениях для повышения производительности?





Спасибо, что прочитали это! Если вам понравилась эта статья, не забудьте оставить 👏, и если вам нужна какая-либо другая информация или вы хотите запросить тему, которую я должен осветить, не стесняйтесь оставлять комментарии ниже!

Вы также можете подписаться на меня в Twitter.