Удобная версия примечаний к выпуску с основными сведениями о том, что нового в Node v19.
Как обычно, когда выходят примечания к выпуску новой версии среды выполнения, у нас есть куча обновлений, касающихся очень внутренних и прозрачных битов (по крайней мере, для нас, как пользователей среды выполнения).
Однако в примечаниях к выпуску Node.js 19 у нас есть несколько интересных жемчужин, которые, если вы не хотите подробно рассматривать, вы, вероятно, пропустили из объявления.
Итак, давайте взглянем на самые интересные части изменений, объявленных в версии 19 нашей любимой среды выполнения JavaScript.
Теперь у нас есть флаг WATCH
Конечно, он все еще находится в экспериментальном режиме, но, по крайней мере, мы можем сказать, что у нас есть начало флага watch
. Означает ли это, что Node постепенно берет пример с команды Deno?
Если вы не в курсе, Deno при разработке своего интерфейса командной строки использовала другой подход, чем Node. Вместо того, чтобы просто предоставить своим пользователям минималистичный способ запуска своих сценариев, команда Deno предоставляет вам все необходимое в одном исполняемом файле.
Это означает наблюдатель за файлами, запуск тестов, предварительный просмотр кода и многое другое. Это определенно отличается от того, что Node использовала в течение последнего десятилетия, но, похоже, он работает. После нескольких разговоров с разработчиками Deno я вижу привлекательность единого места, откуда берутся все эти инструменты.
Итак, можем ли мы с уверенностью сказать, что это лишь первый шаг многих на пути интеграции множества инструментов, разработанных сообществом, в их собственный инструмент командной строки?
Трудно сказать, возможно, мы рассматриваем подобный подход, но он также может быть и одноразовым.
В частности, этот флаг интересен тем, что по умолчанию он будет отслеживать ваш файл точки входа И все необходимые или импортированные зависимости. Если вы хотите отслеживать изменения в определенной папке (я предполагаю, что это похоже на отслеживание изменений в файлах конфигурации), вам нужно будет указать флаг watch-path
, который также находится на экспериментальной стадии.
И прямо сейчас мы мало что можем с этим сделать, как только в «режиме наблюдения» при обнаружении изменения процесс Node.js будет перезапущен. Вот и все.
Не поймите меня неправильно, их уже много, но было бы неплохо, если бы мы могли каким-то образом подключиться к этому событию и выполнить какие-то другие интересные задачи вокруг него.
Ну, может быть, следующая версия!
Пользовательские настройки разрешения ESM (не пропустите это!)
Когда я прочитал этот заголовок, я сразу же пропустил его, потому что я действительно думал, что это похоже на внутренний флаг, который был удален, и меня это не слишком заботило.
А потом я на самом деле перешел по некоторым ссылкам и прочитал, что это за изменение.
Видите ли, хотя название может быть немного загадочным, если вы не являетесь основным разработчиком Node.js, функциональность — нет. Сколько раз вам требовался такой файл в Node?
const myPkg = require("./folder/file")
Обратите внимание на отсутствие расширения, так как мы все знаем, что Node будет искать множество альтернатив, прежде чем сдаться.
Или, возможно, напрямую ссылаться на такую папку:
const myPkg = require("./my-folder")
Это будет работать, если у вас есть файл с именем index.js
внутри этой папки. Node будет автоматически искать его.
Но это не тот случай, если вы попытаетесь import
тот же пакет. «Разрешение спецификатора ESM» Node не поддерживает ни одно из этих дополнительных действий. Вместо этого, если вы не укажете файл напрямую (с правильным расширением), вы его не найдете.
Вы можете имитировать поведение CommonJS, используя флаг --experimental-specifier-resolution=node
, и это сработает. Но опять же, это длинный и уродливый флаг со словом «экспериментальный». Удачи, убеждая своих пользователей, что это безопасно!
К счастью для вас, теперь в Node.js 19 это больше не проблема. С новым загрузчиком вы можете делать такие вещи, и они будут работать:
import file from './file' //as long as "file" has the right extension
Or
import myFile from './folder' //if "folder" has an "index.js" inside
Видеть? Название этого обновления казалось чем-то другим, но вместо этого это очень приятное и долгожданное исправление DX.
Понравилось ли вам то, что вы прочитали? Подпишитесь на мой БЕСПЛАТНЫЙ информационный бюллетень, где я делюсь со всеми своим 20-летним опытом работы в ИТ-индустрии. Присоединяйтесь к Бродяге старого разработчика!
У нас также есть новая версия V8, работающая с нами.
Мы перешли с версии 10.2 на версию 10.7.
Кого это волнует?
Ну, вы могли бы! Видите ли, помимо того факта, что эти обновления в версиях позволяют Node.js использовать последнюю версию среды выполнения, и это гарантирует, что мы не отстанем, эта конкретная версия представляет новое обновление из предложения Stage 3 для ECMAScript: обновления API Intl.numberFormat.
Всегда интересно, когда мы играем с новыми функциями языка, но эта конкретная очень интересна, если вы имеете дело с числами в своем проекте.
Помимо прочего, они повышают точность некоторых существующих методов и добавляют новые параметры форматирования. Официально это предложение все еще находится на этапе 3, но его уже можно опробовать и протестировать с использованием последней версии Node, так что попробуйте!
Мы теряем поддержку DTrace/SystemTap/ETW
Если вы не в курсе, DTrace, SystemTap и ETW — это инструменты профилирования, которые работают на разных ОС, и команда Node.js приложила внутренние усилия, чтобы обеспечить совместимость среды выполнения и работу со всеми из них.
Таким образом, вы можете использовать эти внешние инструменты для профилирования и понимания того, как ваш код на основе Node.js работает в различных обстоятельствах.
Однако, согласно объявлению, усилия по поддержанию их жизни и обновлению были слишком большими по сравнению с использованием/выгодой, которую они принесли пользователям Node.
Так что это прошло.
Пользовались ли вы этим в прошлом? Что ты будешь делать сейчас?
Если вы посмотрите на объявление, есть и другие обновления, но, честно говоря, это были те, которые действительно привлекли мое внимание. Особенно те, которые требовали от меня немного покопаться, чтобы понять их.
Вы в восторге от изменений в Node.js 19? Оставьте комментарий, описывающий, как они влияют на вас! Я всегда рад читать о том, как люди используют Node!
Создавайте приложения с повторно используемыми компонентами, такими как Lego.
Инструмент с открытым исходным кодом Bit помогает более чем 250 000 разработчиков создавать приложения с компонентами.
Превратите любой пользовательский интерфейс, функцию или страницу в компонент многократного использования — и поделитесь им со своими приложениями. Легче сотрудничать и строить быстрее.
Разделите приложения на компоненты, чтобы упростить разработку приложений, и наслаждайтесь наилучшими возможностями для рабочих процессов, которые вы хотите: