モジュール
import, require, use, include, load, consult / export, define, provide, advertise など、言葉は多様。あんまり気にしてもしょうがない。適当に使い分けたり使い分けなかったり。
- プログラム構成素を保存しておく場所=ファイルとディレクトリ(ファイルシステム)
- プログラム構成素を実行する場所=JavaScriptのオブジェクト階層(名前空間)
保存場所(サーバーのファイルシステム)から実行場所(ブラウザなどのメモリ内)にプログラム構成素を読み込むことを「ロードする」と呼ぶと、ロードの問題:
- ファイルの読み込みが必要かどうかを判断する方法
- いつファイルを読み込むか?
- どのファイルを読むかを特定する方法
- どんな方法でファイルの読み込みをするか?
- 読み込んだファイルの内容をどうメモリ内に配置するか?
複数のモジュールがあると依存関係がある。依存関係を把握することも必要。人間もソフトウェアも把握しやすいようにする。どんな構文であっても、provider/consumerモデルで考える(consumerをcustomerともいう)。これは、モノ(商品)の製造者、問屋、ショップ、消費者などの構造と同じ。
- provideするプログラム要素を明示的に宣言するか
- 逆にprovideしないプログラム要素を隠すか
- 特に何もしなくても全部provideする、もあり
- requireするプログラム要素を個別に書くか
- requireするプログラム要素をいちいち書かないで、モジュール単位にrequireするか
- 折衷案もある
大事な余談:
コンピュータやソフトウェアにとっての代名詞: I, you, this, that, it, here, there などの解釈をどうする? 文脈や環境の具体化とも言える。