複雑な単一ページJS Webアプリケーションをクライアント側でどのように構成する必要がありますか?具体的には、モデルオブジェクト、UIコンポーネント、コントローラー、およびサーバーの永続性を処理するオブジェクトの観点から、アプリケーションをきれいに構造化する方法に興味があります。
MVCは最初はぴったりのようでした。しかし、さまざまな深さでネストされたUIコンポーネント(それぞれ独自の方法でモデルデータに作用/反応し、それぞれが直接処理するイベントまたは生成しないイベントを生成する)では、MVCをきれいに適用できるとは思えません。 (ただし、そうでない場合は修正してください。)
-
( この質問 は、最も単純な1ページのアプリ以外に明らかに必要なajaxの使用に関する2つの提案をもたらしました。)
PureMVC/JS のMVCアーキテクチャは、最もエレガントなIMOです。私はそれから多くを学びました。 Scalable JavaScript Application Architecture Nicholas Zakasによるクライアント側のアーキテクチャオプションの調査にも役立つことがわかりました。
他の2つのヒント
Deanが共有しているNicholas Zakasのプレゼンテーションは、出発点として非常に良い場所です。私もしばらくの間同じ質問に答えるのに苦労していました。いくつかの大規模なJavaScript製品を実行した後、誰かが必要とする場合に備えて、学習を参照アーキテクチャとして共有することを考えました。見て:
次のような一般的なJavascript開発の懸念に対処します。
等.
アプリの作成方法:
JavaScriptフレームワークを選択して、ベストプラクティスに従うだけです。私のお気に入りはExtJSとGWTですが、YMMVです。
このための独自のソリューションを展開しないでください。最新のjavascriptフレームワークが行うことを複製するために必要な労力は大きすぎます。すべてをゼロから構築するよりも、既存のものを適応させる方が常に高速です。
Question - What makes an application complex ?
回答-質問自体での「複雑な」Wordの使用。したがって、一般的な傾向は、最初から複雑なソリューションを探すことです。
Question - What does the Word complex means ?
回答-不明または部分的に理解されているもの。例:今日でも重力の理論は私にとって複雑ですが、1655年にそれを発見したアイザックニュートンirにとっては複雑ではありません。
Question - What tools can I use to deal with complexity ?
回答-理解とシンプルさ。
Question - But I understand my application . Its still complex ?
答え-理解と複雑さが共存しないため、考え直してください。巨大な巨大なアプリケーションを理解しているなら、それは小さな単純なユニットの統合に他ならないことに同意するでしょう。
Question - Why all of the above philosophical discussion for a question on
Single Page Application (SAP)?
回答-なぜなら、
-> SPAは、アプリケーション開発で行っている多くのことのために車輪を再発明する必要がある、新しく発明されたコアテクノロジーの一種ではありません。
-> Webアプリケーションのパフォーマンス、可用性、スケーラビリティ、および保守性を向上させる必要性に駆動される概念。
->かなり新しく識別された設計パターンなので、SPAの設計パターンとしてのSPAの理解は、SPAのアーキテクチャに関する十分な情報に基づいた決定を下すのに大いに役立ちます。
->ルートレベルでは、複雑なSPAはありません。アプリケーションのニーズとSPAパターンを理解した後、アプリケーションを作成していることに気付くでしょう。以前と同じように、いくつかの修正と再配置を行います。開発アプローチで。
Question - What about the use of Frameworks ?
回答-フレームワークは、いくつかの一般的に特定された一般的なパターンのボイラープレートコード/ソリューションであるため、アプリケーション開発からx%(アプリケーションに応じて可変)の負荷を取り除くことができますが、特に重い場合はあまり期待できません成長するアプリケーション。アプリケーションの構造とフローを完全に制御するのは常に良いケースですが、最も重要なのはそのためのコードです。アプリケーションコードに灰色または黒色の領域がないようにします。
Question - Can you suggest one of the many approaches to SPA architecture ?
回答-アプリケーションの性質に基づいて独自のフレームワークを考えてください。アプリケーションコンポーネントを分類します。派生したフレームワークに近い既存のフレームワークを探します。見つかった場合は使用し、見つからない場合は独自のフレームワークを使用することをお勧めします。フレームワークの作成は最初はかなりの努力ですが、長期的にはより良い結果を生み出します。 SPAフレームワークの基本的なコンポーネントは次のとおりです。
データソース:モデル/モデルのコレクション
データを提示するためのマークアップ:テンプレート
アプリケーションとの相互作用:イベント
状態のキャプチャとナビゲーション:ルーティング
ユーティリティ、ウィジェット、プラグイン:ライブラリ
これが何らかの形であなたのSPAアーキテクチャで幸運を助けたかどうか教えてください!!
最善の方法は、他のフレームワークの使用例を確認することです。
TodoMVC は、多くの多くのSPAフレームワークを示しています。
現在作業中のWebアプリケーションはJQueryを使用しており、大規模な単一ページWebアプリケーションにはお勧めしません。ほとんどのフレームワーク、つまりDojo、yahoo、googleなどはライブラリで名前空間を使用しますが、JQueryは使用しないため、これは大きな欠点です。
あなたのウェブサイトが小さいことを意図しているなら、JQueryは大丈夫でしょうが、大規模なサイトを構築するつもりなら、利用可能なすべてのJavascriptフレームワークを見て、どれがあなたのニーズを満たすかを決定することをお勧めします。
また、MVCパターンをjavascript/htmlに適用することをお勧めします。おそらく、javascriptのオブジェクトモデルのほとんどは、ajaxを介してサーバーから実際に返すjsonとして実行でき、javascirptはjsonを使用してhtmlをレンダリングします。
知っておく必要のあるもののほとんどをカバーしているAjaxの本を実際に読むことをお勧めします。
私は Samm.js をいくつかの1ページアプリケーションで使用し、大成功を収めています
JavaScript MVCフレームワークを使用できます http://javascriptmvc.com/
または https://github.com/flosse/scaleApp をご覧ください
代替案: ItsNat をご覧ください
JavaScriptで考えますが、同じDOM APIを備えたサーバーでJavaを使用してコーディングします。
jQuery MVC を使用します
チェックアウト http://bennadel.com/projects/cormvc-jquery-framework.htm ベンはかなり鋭く、ブログを掘り下げてみると、CorMVCがどのように組み立てられているかについての素敵な投稿があります。なぜ。
Yeoman を探索することをお勧めします。新しいプロジェクトに既存の「ベストプラクティス」を使用できます。
例えば:
angular.jsを使用する場合、 Yeoman generator があり、ルーティング、ビュー、サービスなどの構造を提供します。また、コードのテスト、縮小なども可能です。
Backboneを使用する場合は、チェックアウト this generator
NikaFramework を使用すると、単一ページのアプリケーションを作成できます。また、[〜#〜] html [〜#〜]、[〜#〜] css [〜#〜]([〜#〜] sass [〜#〜])、JavaScriptを別々のファイルにまとめて、1つだけにバンドル最後に出力ファイル。