Node.js 20x взбудоражил Интернет своими новыми функциями.
Так что апрельские релизы с четными номерами вроде 14, 16, 18 и все такое прочее — это настоящее дело. Они очень стабильны и получают обновления с долгосрочной поддержкой (LTS) в течение трех лет. Это серьезное обязательство, чувак!
Но подождите, с октябрьскими релизами все становится немного более диким. У них есть нечетные числа, такие как 15, 17, 19 и так далее. Они больше похожи на экспериментальный отряд. Обновления для этих ребят обычно прекращаются уже через год. Они все о том, чтобы пробовать что-то новое, жить на грани, понимаете?
А теперь вот совок: если вы не уверены, какую версию выбрать, обычно лучше выбрать версию LTS с четным номером. Это как безопасная ставка, если вам абсолютно не нужна конкретная функция, доступная только в экспериментальной версии. В этом случае возьмите его, но имейте в виду, что вам может понадобиться обновить его позже. Но, эй, вот совет: веб-сайт Node.js на самом деле советует пока придерживаться версии 18, в то время как команда разработчиков решает любые проблемы в последнюю минуту с новой версией 20.
Итак, что говорят о Node.js 20? Приготовьтесь, потому что у него есть несколько новых чертовских функций, которые поразят вас, чувак…
Я перечислил несколько ключевых функций, которые предлагает новая версия Node.js, чтобы дать вам представление о том, что будет дальше.
- Модель разрешений.
В Node.js 20 представлена экспериментальная модель разрешений, которая позволяет разработчикам ограничивать доступ к определенным ресурсам во время выполнения. Это включает в себя ограничение доступа к файловой системе (чтение и запись),child_process
,worker_threads
и собственные дополнения. - Пользовательские обработчики загрузчика ESM:
Пользовательские обработчики жизненного цикла модуля ES, предоставляемые через загрузчики (--experimental-loader=./foo.mjs
), теперь выполняются в выделенном потоке, изолированном от основного потока. Это обеспечивает отдельную область для загрузчиков и предотвращает перекрестное загрязнение между загрузчиками и кодом приложения. - V8 11.3:
Node.js 20 включает обновление движка JavaScript V8, доведя его до версии 11.3. Это обновление обеспечивает улучшенную производительность и новые языковые функции, включаяString.prototype.isWellFormed
иtoWellFormed
, методы, которые изменяют Array и TypedArray путем копирования, изменяемый размер ArrayBuffer и расширяемый SharedArrayBuffer, флаг RegExp v с установленной нотацией + свойства строк и хвостовой вызов WebAssembly. - Stable Test Runner:
модульtest_runner
помечен как стабильный и включает в себя стандартные блоки для разработки и запуска тестов, в том числеdescribe
,it
/test
и крючки для структурирования тестовых файлов, имитации, режим просмотра иnode --test
для параллельного запуска нескольких тестовых файлов. - Улучшения производительности. 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. Команды, стоящие за этими средами выполнения, учатся друг у друга, подталкивая друг друга к более быстрому развитию. И знаете, кому все это выгодно? Мы, разработчики, чувак! Это беспроигрышная ситуация, на самом деле.