Module Harmonyの話を聞いた
Module Harmonyを知らなかったのでざっくりメモっておく
JavaScript(Ecmascript)の仕様策定は合議制で、プロポーザルという提案を出し合って実装してみて意見を出し合いながら新しい仕様が決まる
そんな中でModuleに関する様々な提案がされているので、それぞれを個別に議論するのではなく、Moduleという括りで依存関係を整理しながら提案しようというのがModule Harmonyらしい
今は提案されている仕様の依存関係がわけわからんくなってるみたい

整理されている提案
import attibutes
importするときにどんな形式にするか宣言できる
import foo form "./bar.json" with { type: "json" };
Deferred imoprt evaluation
import時に遅延評価できる syntax を追加する仕様
import defer * as ns from "./mod.mjs"; function later() { ns.anExport; }
Import Phase に応じた修飾子の提案
Moduleのimort はいくつかフェーズに分かれていて、それぞれの修飾子が提案されている
Module Source Phase
- Fetch / compile 後のモジュールをimportする時
- ファイルをソースからimoprtしたらコンパイルもする
- wasmでモジュールをロードするとかが具体例にあげられる
import source s from "./ml.js";
Module instance Phase
- Attach context 後のモジュールをimportする時
- Module expressionsでmoduleを単体で式として評価して、定義し、インスタンス化したものをimportする時
import module m from "./ml.js";
Deferred import evaluation
dependenciesの解決とかexportでimportバインドした後のモジュールをimportする時
import defer * as d from "./m3.js";
最後にEvaluate後の今までのやつ
import * as ns from "./m4.js";
まとめ
スライドにはもっと細かい話が出ているが、なかなか理解が難しい
とりあえず仕様が確定した時や話題になったときに思い出せるように書き残してみた
Module Harmonyについては、様々な提案は依存しあっていて、その関係を整理して進めていかないと仕様が決まりづらいというのはなるほどなと思った