File Load Order
- Meteorではファイルの読み込み順番に影響を受けないようなコードを書くのが一番いい
- 読み込み順番に影響を受けるようなコードはパッケージ化する(オススメ!)
- 読み込みを明示的に制御できる場合は Meteor.startup を使用する
- しかしアプリケーションによっては、読み込み順番の依存関係を避けられない場合がある
- Meteor にはいくつかのファイル読み込み順番に関するルールが存在している
- そのルールは以下の通り
File Load Order ルール
ルール1. HTMLテンプレートファイルは常に何よりも先に読み込まれる
ルール2. ファイル名が「main」から始まるファイルは 最後 に読み込まれる
ルール3. libディレクトリ内にあるファイルが次に読み込まれる
ルール4. 深いパスにあるファイルが次に読み込まれる
ルール5. ファイルはアルファベット順に読み込まれる
数字が小さいルールの方が優先度は高い。
また、ルール1から順番に適用される。
Example
以下のようなファイル構成だった場合、
.
├── client/
│ ├── feature-y.js
│ ├── lib/
│ │ ├── methods.js
│ │ └── styles.js
│ └── main.js
├── feature-x.js
├── lib/
│ ├── collections.js
│ └── feature/
│ └── styles.js
├── main.html
└── nav.html
これは以下の順番で読み込まれる。
nav.html
main.html
client/lib/methods.js
client/lib/styles.js
lib/feature/styles.js
lib/collections.js
client/feature-y.js
feature-x.js
client/main.js
ポイント
- HTMLテンプレートである main.html と nav.html はルール1により js ファイルより先に読み込まれる
- ルール2により、main.html が nav.html よりも後に読み込まれる
- ルール5のアルファベット順で main.html は nav.html よりも前になるが、ルール2のほうが優先度が高いため、nav.html の方が先に読み込まれる
- ルール4により、ディレクトリ階層が深いファイルから先に読み込まれる
- ルール4では client/lib/styles.js と lib/feature/styles.js は同一の優先度だが、ルール5によりclient/lib/styles.js の方が先に読み込まれる