Pull to refresh

Comments 8

UFO just landed and posted this here

Да, так и есть. Одно радует, лёд тронулся и процесс миграции начался.

Давно ожидаемая фича. С 2015 года запускаю все свои NodeJS проекты с Babel через require('@babel/register'); И во всем остальном коде использую import вместо require кроме моделей и миграций Sequelize и конфигов Webpack. На 8й Node еще приходилось включать флаг для поддержки async/await. Радует что с каждым новым проектом все меньше и меньше костылей приходится добавлять в код

А чем новые модули лучше старых? Я пока вижу только один аргумент: унификация способа подключения модулей в ноде и на фронте. Может быть есть что-то ещё?

Это даже не унификация, а именно стандартизация. ES Modules это часть спецификации ECMAScript т.е. новые модули это нативная реализация модулей, работающая в идеале одинаково во всех реализация движков и производных ECMAScript.


Ещё одно из отличий ES Modules от Common JS это то, что ES Modules по своей природе асинхронны, а Common JS синхронны.

ES-модулям намного легче делать tree shaking (актуально скорее для фронта, где важно количество подключенного кода). Есть возможность асинхронного подключения модуля (что тоже актуально для фронта). Изменения в стандарте package.json поспособствуют увеличению доли пакетов, опубликованных в NPM в формате ES-модуля, что пойдёт на пользу фронту (из-за tree shaking). В остальном это синтаксический сахар.


В общем польза только для фронта, хотя он уже давно использует ES-модули. Бэкэнду только унификация и синтаксический сахар.

Каким образом можно запустить один конкретный файл в режиме ECMAScript, без указания ему "странного" расширения .mjs? Почему нет аналога --input-type=module для запуска файла в таком же режиме?

У нас в проектах имеется множество скриптов, размещённых в файлах без расширения (т.к. скрипты на разных языках и взаимозаменяемы), типа ./scripts/site-import, ./scripts/make-backup, и добавлять туда расширение .mjs специально для скриптов на node.js - будет как-то совсем нелепо...

Запилил ишшуй на эту тему https://github.com/nodejs/node/issues/41136 но там послали на дискашшен, где только разговоры разговаривают, но фиксить не хотят ;(

Sign up to leave a comment.

Articles