以下の内容はhttps://uga-box.hatenablog.com/entry/2024/06/07/000000より取得しました。


【JavaScript】Module Harmonyとは

Module Harmonyの話を聞いた

speakerdeck.com

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については、様々な提案は依存しあっていて、その関係を整理して進めていかないと仕様が決まりづらいというのはなるほどなと思った

他参考

ECMAScript Module Harmony




以上の内容はhttps://uga-box.hatenablog.com/entry/2024/06/07/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14