私はノックアウト js を学び始めており、1000 人のユーザーと 1000 のエントリを処理するような中規模のアプリケーションを構築することを計画しています。ノックアウト js アプリケーションの js ファイルをどのように構成しているのでしょうか。のような従来の MVC ファイル構造のようなものです。
ライブラリ/
アプリ/
アプリ/モデル/
アプリ/ビュー/
アプリ/コントローラー/
それとも別の構造ですか?
私はノックアウト js を学び始めており、1000 人のユーザーと 1000 のエントリを処理するような中規模のアプリケーションを構築することを計画しています。ノックアウト js アプリケーションの js ファイルをどのように構成しているのでしょうか。のような従来の MVC ファイル構造のようなものです。
ライブラリ/
アプリ/
アプリ/モデル/
アプリ/ビュー/
アプリ/コントローラー/
それとも別の構造ですか?
アプリケーションを構築する「正しい」方法がないため、これは非常に自由回答の質問のように思えます。また、アプリケーションのサイズが異なれば、異なる構造から得られるメリットも異なります。いくつかのモデルしかなく、フォルダーはまったく必要ない場合があります。いくつか必要です。とにかく、私の答えに進みます。
ノックアウトについて具体的に質問しているため、これは、サーバーのコードではなく、クライアント側の JavaScript のみを使用していることを前提としています。アプリケーション構造全体について話している場合は、質問でこれを明確にしてください。
まず、Knockout にはコントローラーがありません。ビューモデルがあります。これはセマンティックな違いのように思えるかもしれませんが、実際にはそうではありません。コントローラーは比較的愚かです。ビューからモデル内のビジネス ロジックにアクションをルーティングします。一方、ViewModel はスマートです。これらには、ビジネス ロジックと、ビューが使用するパブリック プロパティおよびメソッドが含まれています。
モデルは通常、Knockout 側の一部ではありません。それらはサーバー上にあり、データベース テーブルを表します (これは一般化であり、明らかに例外が存在します)。controller
これらの両方で、ディレクトリとディレクトリを削除し、model
ディレクトリが残りviewmodels
ます。
ビューはよりトリッキーです。ビューは HTML ですが、再利用したい場合はノックアウト テンプレートにすることもできます。「ビュー」と「テンプレート」を分離するために、このディレクトリを と呼びますtemplates
。
lib
最後に、これをディレクトリに配置しません。アプリケーション自体はライブラリではありません。それはアプリケーションです。これらはすべて public javascript フォルダーの下にあるはずですが (Web からアクセスする必要があるため)、ツリーをさらに下に移動する理由がわかりません。確かにlib
、他のプラグイン用のディレクトリが必要になりますが、これは Knockout アプリケーションで使用されるためlib
、アプリと同じレベルにある必要があります。