9

私は最近Knockoutを使い始めましたが、それは本当に素晴らしく、Webアプリケーションにもたらすことができるパワーであると言わなければなりません。

ただし、今は現実の世界で何かを行い、Knockoutを使用してソリューションを設計したいと考えています。例えば。ビューモデルをどのように初期化する必要がありますか。彼らはどこに行くべきですか?私は主にシングルページアプリケーションを対象としています。そのため、主にシングルページアプリケーションの設計に興味があります。

4

3 に答える 3

18

パズルのピースはたくさんありますが、ここに私のための短いリストがあります。

免責事項:私はあなたのアプリについてもいくつかの仮定をしますので、それのいくつかは変わるでしょう。また、これはそれを行うための1つの方法にすぎません。良い方法があるかもしれません。しかし、これはあなたにとって良い出発点になるはずです。

アプリがSPAの約5つのメインビューのセットであると仮定します。

  1. アプリを格納するためのマスター/シェルHTMLページを作成します
  2. ビューごとにビュー/部分ページ(html)を作成します。各ビューは、ナビゲート/ルーティングするまで非表示になります。
  3. 各ビューにバインドできるビューモデルを作成します。すべてをキックスタートするbootstrapper.jsを作成します。
  4. Bootstrapperは、使用するルーティングエンジン(サミー、履歴など)をクランクアップする必要があります
  5. Bootstrapperは、ビューをビューモデルにバインドしますBootstrapperは、SPAのシードデータと状態をクランクアップすることもできます
  6. ヒント:SoCを使用してください。ビューモデルをビューのモデルにします。ルーティング、ajax呼び出し、UI操作などを行わせないでください。他の関数用に個別のオブジェクトを用意してください。DRY、KIS、SoC...すべて良いもの:-)

ビューモデルの作成にはRevealingModulePatternを使用しますが、標準のModuleでもまったく問題ありません。

より具体的な質問がある場合は、喜んでお答えください。私はこの短いcuzを実際に維持しようとしましたが、5分の答えではありません。実際、私は2012年8月にこれを行うための1つの方法でPluralsightのコースを書いています:-)

于 2012-06-01T13:40:51.270 に答える
1

主要なコンポーネントであるKnockoutを使用して作成したミニSPAフレームワークをオープンソース化しました。

knockout-spa Knockout、Require、Director、Sugarの上に構築されたミニ(しかし本格的な)SPAフレームワーク。 https://github.com/onlyurei/knockout-spa

ライブデモ: http: //knockout-spa.mybluemix.net

特徴

  • ルーティング(FlatironのDirectorに基づく):HTML5履歴(pushState)またはハッシュ。
  • 高度に構成可能で再利用可能:ページ固有のJSでページのモジュール/コンポーネントを選択すると、ページのHTMLテンプレートに自動配線されます
  • SEO対応(prerender.io)
  • 高速で軽量(85 KBのJSを縮小してギズアップ)
  • 本番用のJS用の2層バンドルビルド:ほとんどのページで使用される共通モジュールと、遅延読み込みされるページ固有のモジュール
  • JS、CSS、HTMLを整理して再利用するための正気を保つのに役立つ整理されたフォルダー構造
  • Knockout 3.3.0+を使用しているため、KnockoutのWebコンポーネントとカスタムタグのフレーバーに対応できます(http://knockoutjs.com/documentation/component-overview.html
  • すべてのドキュメントは主要な依存関係の独自のホームページにあるため、新しいフレームワークを完全に学ぶ必要はありません。
于 2015-04-25T04:52:17.210 に答える
1

更新された代替案(2015)が必要な場合...別のオプション(および非常に優れたオプション)は、Steven Sandersonのブログで説明されているように、Yeomanを使用してシングルページアプリをスキャフォールディングすることです

コードの記述に集中できるように、必要なすべてのアーキテクチャを実行します。既知のノックアウトコンポーネント機能の再利用性を最大限に活用するようにしてください。これはSteveSandersonによって驚くほど説明されているので、彼のよくできた仕事の栄光を奪うことはありません。

于 2015-05-21T18:20:05.697 に答える