続)javascriptの読み込み順について
前回かいた記事の続編となるのですが、JavaScriptファイルの読み込み順についてです。
そもそもJSの読み込み順が順不同でも大丈夫なような対策はできないかと考えてみました。
順不同で読み込まれた問題となるのは以下ようなパターンです。
- Hoge.view.postを生成使用しようとした場合にHoge.viewsのが定義されてない場合
- クラスを定義したファイルが生成されていない状態でインスタス生成されてしまう場合
1.に関してですがコードの頭に以下のようなコードをうめることで回避することが可能です。
Hoge.Views || = {}
クラス定義前にもし変数が定義されてなければ、その場で定義してしまうという回避策です。
クラスなどを変数にまとめている場合は上記のようなコードをいれることで変数定義より前に読み込まれた場合でもクラス定義を格納することができると思います。
2.に関してですが、アプリケーションのブートをhtml内で行うことで解消できます。
<script type="text/javascript"> $(function() { var App = new Apps(); }); </script>
すべてのJSファイルの読み込みが完了したタイミングでアプリケーションインスタスが生成されるため、それ以降インスタンスを生成する際にclassファイルが存在しないといったことがおきません。
railsの場合、assetをきっちり設定するのもいいのですが、こちらのほうが汎用的なのでベターかもしれません。