
Никита
15.10.2017
14:36:12
> As you can see, the most updated PHP wouldn't be able to serve JavaScript modules with an extension only NodeJS recognizes.
Чё?
https://github.com/nodejs/node/pull/16170#issuecomment-336318420

Vladimir
15.10.2017
14:36:58
Да он вообще ахинею несет

illiatshurotshka❄️
15.10.2017
14:37:24
чет вообще не понял зачем отдельное расширение

Google

Никита
15.10.2017
14:38:02

Vladimir
15.10.2017
14:38:54
Зачем кому то запускать mjs в браузере не понятно

Никита
15.10.2017
14:39:32

Vladimir
15.10.2017
14:39:35
CommonJS не запускается в браузере и никто не умер

Ҫѐҏӗѫӑ
15.10.2017
14:40:07

Vladimir
15.10.2017
14:40:28

Ҫѐҏӗѫӑ
15.10.2017
14:40:31
а вебрефлекшн тупенький
он там полчаса назад очередной шитсторм в твиттере поднял

Vladimir
15.10.2017
14:40:54
В том чтобы использовать file.m.js нет ничего не разумного, поэтому ломать нельзя

Никита
15.10.2017
14:41:57

Ҫѐҏӗѫӑ
15.10.2017
14:42:16
да все верно
.м.жс ломает намного больше, чем .мжс

Google

Никита
15.10.2017
14:42:48

Vladimir
15.10.2017
14:43:37
Ну да

Никита
15.10.2017
14:44:33
Но я думаю, что если сломать совместимость с *.m2076527k.js — это не сделает плохо никому.
Ты не согласен?

Vladimir
15.10.2017
14:45:10
Да, это маловероятно. Но если этого можно избежать, то лучше этого избежать
Я честно скажу, я лично предпочел бы флаг в CLI
Но и с mjs особых проблем не вижу

Ҫѐҏӗѫӑ
15.10.2017
14:49:45
с флагом не будет интеропа
а с mjs он есть

Vladimir
15.10.2017
14:49:53
Да и ладно

Ҫѐҏӗѫӑ
15.10.2017
14:50:09
в этом и суть
ну как ладно

Vladimir
15.10.2017
14:50:20
Я знаю

Ҫѐҏӗѫӑ
15.10.2017
14:50:35
ты думаешь весь нпм перепишут в момент релиза 9 ноды на мжс?

Vladimir
15.10.2017
14:50:35
Но на мой взгляд без интеропа норм
Нет, зачем
Нужен cjs модуль - делаешь require

Ҫѐҏӗѫӑ
15.10.2017
14:51:18
так кстати в 9 будет оно?
я чот так и не понял

Google

Vladimir
15.10.2017
14:51:48
Пока не ясно
Думаю, что нет

Никита
15.10.2017
14:53:58

Vladimir
15.10.2017
14:54:24
Ну для этого нужно чтобы tc39 это принял

Никита
15.10.2017
14:54:38
И я готов это аргументировать, кмк это было бы единственным разумным решением для всех.

Ҫѐҏӗѫӑ
15.10.2017
14:54:59
в ecma262 и так юз модуль имплицитный

Никита
15.10.2017
14:55:03

Ҫѐҏӗѫӑ
15.10.2017
14:55:07
в стрикте

Никита
15.10.2017
14:55:13
А браузеры это заблокировали.

Ҫѐҏӗѫӑ
15.10.2017
14:55:29
браузеры тут ни при чем

Sergey
15.10.2017
14:55:29

Никита
15.10.2017
14:55:38
А без браузеров следующий вариант — *.mjs.

Никита
15.10.2017
14:56:11
браузеры тут ни при чем
Как не при чём? Они сказали что не будут следовать 'use module'; даже если его кто-то введёт, и будут его игнорить.

Ҫѐҏӗѫӑ
15.10.2017
14:56:20
они не говорили ничего такого
их не спрашивали
в es только одни модули есть
require - самодеятельность ноды
так что этот use module и так бай дефолт

Никита
15.10.2017
14:58:35
Он включается из хтмл.

Google

Никита
15.10.2017
14:59:10
Сами браузеры молчали, да.

Ҫѐҏӗѫӑ
15.10.2017
14:59:24

Никита
15.10.2017
15:00:41
https://developer.mozilla.org/ru/docs/Web/HTML/Element/script#attr-type

Ҫѐҏӗѫӑ
15.10.2017
15:02:23
это для обратной совместимости

Никита
15.10.2017
15:02:27
Модули и скрипты несовместимы в обе стороны.

Admin
ERROR: S client not available

Никита
15.10.2017
15:02:34

Ҫѐҏӗѫӑ
15.10.2017
15:03:05
а для чего?

Никита
15.10.2017
15:03:35
Для того, чтобы включить режим esm для этого скрипта. Чтобы там делать export/import.
Аналог *.mjs в ноде и 'use module'; если бы он был.
По умолчанию это всё выключено, иначе бы была сломана обратная совместимость.

Ҫѐҏӗѫӑ
15.10.2017
15:04:49
это нужно чтобы статически разрешать зависимости
а не динамически

Никита
15.10.2017
15:05:24
это — что?

Ҫѐҏӗѫӑ
15.10.2017
15:05:38
type=module
явно указывает браузеру, что надо до исполнения их разрешить

Никита
15.10.2017
15:07:11
Эм. То есть ты утверждаешь, что без type=module ключевые слова import/export в браузерах будут работать?

Google

Ҫѐҏӗѫӑ
15.10.2017
15:07:36
они будут парситься (и давно парсятся)
но будет поздно разрешать зависимости
поэтому будет какая-то ошибка, но не из js
а от энва
который не нашел их
с т.з. js там все легально

Никита
15.10.2017
15:09:31
Хотя дабл парс можно, он не сильно медленный в реале.

Ҫѐҏӗѫӑ
15.10.2017
15:10:20
я и говорю type=module как раз для того, чтобы после парсинга и до выполнения сделать статический резолв
хотя может там и дважды парсят, я не знаю как в разных браузерах это сделано
и позволяют ли движки после парсинга выполнить что-то внешнее
наверняка да

Никита
15.10.2017
15:12:15
Скрипты и модули это синтаксически разные штуки. До парсинга надо понять под что мы парсим.
На пальцах: «спарсиСкрипт(текст)» и «спарсиМодуль(текст)» которые выдают дерево.
https://tc39.github.io/ecma262/#sec-ecmascript-language-scripts-and-modules
Дабл парс никто не хотел делать, и я сомневаюсь что браузеры его таки делают.

Ҫѐҏӗѫӑ
15.10.2017
15:13:48
нет, синтаксически это одно и то же
семантически они разные

Vladimir
15.10.2017
15:13:56
Нет

Никита
15.10.2017
15:14:09