モジュールロード/非モジュールロード

古い方式:

<script src="lib-common.js">
<script src="lib-foo.js">
<script src="lib-bar.js">
<script src="main.js">

直接的依存関係は(仮定):

  1. main → lib-foo
  2. main → lib-bar
  3. lib-foo → lib-common
  4. lib-bar → lib-common

scriptタグの並びを見ても依存方向/依存可能性は分かるが、ほんとの依存関係は分からない。次のようにすればハッキリする。

  1. main で lib-foo と lib-bar を import
  2. lib-foo で lib-common を import
  3. lib-bar で lib-common を import
  4. それぞれで必要な export指定 をする。

import/export を使えばそれはモジュールコード。したがって、mainも含めてすべてモジュールになる。

import/export構文と、モジュールロードという行為は区別する。構文の解釈がローディングを引き起こすが、概念的には別。実行環境により、モジュールローディング(非モジュールスクリプト・ローディングも)のメカニズムは変わる。

モジュールローディングが実行されると、実行した側のプログラム実行コンテキスト(環境)が変わる。見えている名前に変化が生じる。