Node.js 20x взбудоражил Интернет своими новыми функциями.

Так что апрельские релизы с четными номерами вроде 14, 16, 18 и все такое прочее — это настоящее дело. Они очень стабильны и получают обновления с долгосрочной поддержкой (LTS) в течение трех лет. Это серьезное обязательство, чувак!

Но подождите, с октябрьскими релизами все становится немного более диким. У них есть нечетные числа, такие как 15, 17, 19 и так далее. Они больше похожи на экспериментальный отряд. Обновления для этих ребят обычно прекращаются уже через год. Они все о том, чтобы пробовать что-то новое, жить на грани, понимаете?

А теперь вот совок: если вы не уверены, какую версию выбрать, обычно лучше выбрать версию LTS с четным номером. Это как безопасная ставка, если вам абсолютно не нужна конкретная функция, доступная только в экспериментальной версии. В этом случае возьмите его, но имейте в виду, что вам может понадобиться обновить его позже. Но, эй, вот совет: веб-сайт Node.js на самом деле советует пока придерживаться версии 18, в то время как команда разработчиков решает любые проблемы в последнюю минуту с новой версией 20.

Итак, что говорят о Node.js 20? Приготовьтесь, потому что у него есть несколько новых чертовских функций, которые поразят вас, чувак…

Я перечислил несколько ключевых функций, которые предлагает новая версия Node.js, чтобы дать вам представление о том, что будет дальше.

  1. Модель разрешений.
    В Node.js 20 представлена ​​экспериментальная модель разрешений, которая позволяет разработчикам ограничивать доступ к определенным ресурсам во время выполнения. Это включает в себя ограничение доступа к файловой системе (чтение и запись), child_process, worker_threads и собственные дополнения.
  2. Пользовательские обработчики загрузчика ESM:
    Пользовательские обработчики жизненного цикла модуля ES, предоставляемые через загрузчики (--experimental-loader=./foo.mjs), теперь выполняются в выделенном потоке, изолированном от основного потока. Это обеспечивает отдельную область для загрузчиков и предотвращает перекрестное загрязнение между загрузчиками и кодом приложения.
  3. V8 11.3:
    Node.js 20 включает обновление движка JavaScript V8, доведя его до версии 11.3. Это обновление обеспечивает улучшенную производительность и новые языковые функции, включая String.prototype.isWellFormed и toWellFormed, методы, которые изменяют Array и TypedArray путем копирования, изменяемый размер ArrayBuffer и расширяемый SharedArrayBuffer, флаг RegExp v с установленной нотацией + свойства строк и хвостовой вызов WebAssembly​.
  4. Stable Test Runner:
    модуль test_runner помечен как стабильный и включает в себя стандартные блоки для разработки и запуска тестов, в том числе describe, it/test и крючки для структурирования тестовых файлов, имитации, режим просмотра и node --test для параллельного запуска нескольких тестовых файлов.
  5. Улучшения производительности. Node.js 20 включает множество улучшений в основных частях среды выполнения, включая URL, fetch() и EventTarget. Стоимость инициализации EventTarget снижена вдвое, что обеспечивает более быстрый доступ ко всем использующим его подсистемам. Кроме того, вызовы V8 Fast API используются для повышения производительности таких API, как URL.canParse() и таймеры. Node.js 20 включает в себя определенные изменения, такие как обновленная версия 2.0 Ada, быстрого и соответствующего спецификациям анализатора URL-адресов, написанного на C++​.

Краткое содержание

Node.js 20 — это большой скачок вперед, друг мой. Это крупный выпуск, в котором представлены некоторые из замечательных функций Deno.

Но подождите, теперь вы можете подумать: а не переключиться ли на Deno?

Позвольте мне сказать вам, Deno довольно рад. Он стабилен, имеет встроенную поддержку TypeScript, ускоряет время разработки, требует меньше инструментов для выполнения задач и получает регулярные обновления. Но вот в чем загвоздка: Deno существует не так долго, как Node.js, поэтому у него меньше доступных модулей. А иногда эти модули в Deno похожи на копии библиотек, которые мы любим в Node.js.

Конечно, Deno и Bun стоит рассмотреть для новых проектов. Они облегчают переход вашего кода и все такое. Но давайте будем реалистами, уже существуют тысячи существующих приложений Node.js. Отказ от Node.js не всегда даст вам явное преимущество, друг мой.

Но эй, вот и хорошая новость — у нас есть удивительная экосистема JavaScript. Команды, стоящие за этими средами выполнения, учатся друг у друга, подталкивая друг друга к более быстрому развитию. И знаете, кому все это выгодно? Мы, разработчики, чувак! Это беспроигрышная ситуация, на самом деле.