アセット パイプラインを使用してすべての Javascript をコンパイルする Rails 3 を使用している場合、アプリケーション全体で Knockout ビュー モデルを 1 つしか持てないということですか? そうでない場合、どのビューモデルがどのビューにバインドされているかを指定するにはどうすればよいですか? チュートリアル コードでは、ページごとに 1 つのビュー モデルがバインドされているように見えますが、最初のページの読み込み時にすべての JS が読み込まれるため、レールでは機能しません。
1 に答える
いいえ、すべてのページにすべての JavaScript を含める必要はありません。これは非常に悪い考えです。
JavaScript を 1 つのページに制限する方法は多数あります。1 つを選択する必要があります。
方法 1
方法 2
方法 3
すべてのページにすべての JavaScript をロードしようとしないでください。
更新(以下のコメントの後):
ここでいくつかの異なることを混乱させていると思います。
まず、すべての JavaScript を 1 つの gzip/ugl ファイルにコンパイルしたとしても、アプリケーション全体で 1 つのノックアウト ビューモデルを使用する必要はありません。そのファイルには、複数のビューモデルを含めることができます。彼らはお互いについて知る必要さえありません。
第 2 に、Rails パイプラインが機能する方法は、関連または依存する JavaScript ファイルを連結することです。これは、ブラウザが各ページに必要な JavaScript を取得するために行わなければならない要求の数を減らすために行われます。すべての JavaScript が 1 つのファイルになるとは限りません。各ページのjavascriptが1つのファイルになるだけです。詳細については、Rails Asset Pipeline ドキュメントを参照してください。このドキュメントには、その仕組みと適切な使用方法に関する優れた説明があります。
第三に、これらのいずれも、すべての JavaScript を 1 つのファイルであるかのように記述する必要があるという意味ではありません。実際、これは悪い考えです。JavaScript を機能ごとに関連するファイルに分ける必要があります。これにより、再利用が可能になり、開発作業が容易になります。