Vladimir
https://github.com/nodejs/node/pull/16170
Vladimir
Ирония в том, что естественно этот вариант рассматривали
Vladimir
Но у этого чувака синдром гения
Vladimir
Он регулярно придумывает какие то элементарные вещи и считает, что это гениальная идея
Vladimir
Аргумент против m.js очень простые - ломает обратную совместимость
Nikita
> As you can see, the most updated PHP wouldn't be able to serve JavaScript modules with an extension only NodeJS recognizes. Чё?
Nikita
https://github.com/nodejs/node/pull/16170#issuecomment-336318420
Vladimir
Да он вообще ахинею несет
Anonymous
чет вообще не понял зачем отдельное расширение
Nikita
Аргумент против m.js очень простые - ломает обратную совместимость
По поводу обратной совместимости — это допустимо если *.m.js никто больше не использует.
Vladimir
По поводу обратной совместимости — это допустимо если *.m.js никто больше не использует.
Да, но это все равно ломает обратную совместимость, а mjs - нет
Vladimir
Зачем кому то запускать mjs в браузере не понятно
Nikita
Да, но это все равно ломает обратную совместимость, а mjs - нет
Не совсем. Всё в какой-то мере ломает обратную совместимость.
Vladimir
CommonJS не запускается в браузере и никто не умер
Anonymous
Vladimir
Не совсем. Всё в какой-то мере ломает обратную совместимость.
Ну да. Но есть разумные ожидания. Например, полагаться на отсутствие метода не разумно, а на присутствие - разумно
Anonymous
а вебрефлекшн тупенький
Anonymous
он там полчаса назад очередной шитсторм в твиттере поднял
Vladimir
В том чтобы использовать file.m.js нет ничего не разумного, поэтому ломать нельзя
Anonymous
да все верно
Anonymous
.м.жс ломает намного больше, чем .мжс
Nikita
.м.жс ломает намного больше, чем .мжс
Это выводы. А логика неверна.
Nikita
В том чтобы использовать file.m.js нет ничего не разумного, поэтому ломать нельзя
По ней, в том, чтобы использовать file.m2076527k.js нет ничего не разумного, поэтому ломать совместимость с *.m2076527k.js нельзя.
Vladimir
Ну да
Nikita
Но я думаю, что если сломать совместимость с *.m2076527k.js — это не сделает плохо никому.
Nikita
Ты не согласен?
Vladimir
Да, это маловероятно. Но если этого можно избежать, то лучше этого избежать
Vladimir
Я честно скажу, я лично предпочел бы флаг в CLI
Vladimir
Но и с mjs особых проблем не вижу
Anonymous
с флагом не будет интеропа
Anonymous
а с mjs он есть
Vladimir
Да и ладно
Anonymous
в этом и суть
Anonymous
ну как ладно
Vladimir
Я знаю
Anonymous
ты думаешь весь нпм перепишут в момент релиза 9 ноды на мжс?
Vladimir
Но на мой взгляд без интеропа норм
Vladimir
Нет, зачем
Vladimir
Нужен cjs модуль - делаешь require
Anonymous
так кстати в 9 будет оно?
Anonymous
я чот так и не понял
Vladimir
Пока не ясно
Vladimir
Думаю, что нет
Nikita
Я честно скажу, я лично предпочел бы флаг в CLI
Я бы предпочёл 'use module'; везде.
Vladimir
Ну для этого нужно чтобы tc39 это принял
Nikita
И я готов это аргументировать, кмк это было бы единственным разумным решением для всех.
Anonymous
в ecma262 и так юз модуль имплицитный
Nikita
Ну для этого нужно чтобы tc39 это принял
Да, очевидно. Он был бы разумным только в случае если бы ему следовали все.
Anonymous
в стрикте
Nikita
А браузеры это заблокировали.
Anonymous
браузеры тут ни при чем
Anonymous
Может кто знает
Nikita
А без браузеров следующий вариант — *.mjs.
Nikita
браузеры тут ни при чем
Как не при чём? Они сказали что не будут следовать 'use module'; даже если его кто-то введёт, и будут его игнорить.
Anonymous
они не говорили ничего такого
Anonymous
их не спрашивали
Anonymous
в es только одни модули есть
Anonymous
require - самодеятельность ноды
Anonymous
так что этот use module и так бай дефолт
Nikita
Он включается из хтмл.
Nikita
они не говорили ничего такого
Ок, это то, что сказали отдельные разрабы браузеров.
Nikita
Сами браузеры молчали, да.
Anonymous
Nikita
https://developer.mozilla.org/ru/docs/Web/HTML/Element/script#attr-type
Nikita
так что этот use module и так бай дефолт
Если бы так было, проблем бы не было вообще.
Anonymous
это для обратной совместимости
Nikita
Модули и скрипты несовместимы в обе стороны.
Anonymous
а для чего?
Nikita
Для того, чтобы включить режим esm для этого скрипта. Чтобы там делать export/import.
Nikita
Аналог *.mjs в ноде и 'use module'; если бы он был.
Nikita
По умолчанию это всё выключено, иначе бы была сломана обратная совместимость.
Anonymous
это нужно чтобы статически разрешать зависимости
Anonymous
а не динамически
Nikita
это — что?
Anonymous
type=module