古い方式:
<script src="lib-common.js"> <script src="lib-foo.js"> <script src="lib-bar.js"> <script src="main.js">
直接的依存関係は(仮定):
- main → lib-foo
- main → lib-bar
- lib-foo → lib-common
- lib-bar → lib-common
scriptタグの並びを見ても依存方向/依存可能性は分かるが、ほんとの依存関係は分からない。次のようにすればハッキリする。
- main で lib-foo と lib-bar を import
- lib-foo で lib-common を import
- lib-bar で lib-common を import
- それぞれで必要な export指定 をする。
import/export を使えばそれはモジュールコード。したがって、mainも含めてすべてモジュールになる。
import/export構文と、モジュールロードという行為は区別する。構文の解釈がローディングを引き起こすが、概念的には別。実行環境により、モジュールローディング(非モジュールスクリプト・ローディングも)のメカニズムは変わる。
モジュールローディングが実行されると、実行した側のプログラム実行コンテキスト(環境)が変わる。見えている名前に変化が生じる。