1ページのブラウザーベースのWebアプリケーションを設計しています。
JQuery
は私のアプリケーションで既に使用されています。現在、データバインディングとUI管理にKnockoutJS
を使用する予定です。ただし、過去にBackbone.js
を使用したことがあり、コントローラーレイヤーによって提供されるルーティング機能には非常に感銘を受けました。
また、クライアント側ルーティングのための pathjs のようなJQueryベースのソリューションも検討しました。
誰かが適切なルーティングシステムを選択するための提案やガイドラインを提供できれば素晴らしいと思います。
KnockoutJS
の優れたデータバインディング機能のため、KnockoutJS
の代わりにBackbone.js
を使用するつもりはありません。
少し調査した後、解決策を見つけました。 @Eisenhauer Backboneのルーティング機能は素晴らしいですが、Backboneを使用していない場合はどうでしょう。私の質問で概説したように、クライアント側のMVVMモデルを提供するKnockoutJSを既に使用しているため、同じページに追加のMVC実装を配置することはあまり良い考えではありません。
スタンドアロンルーティングソリューションを探している人にとって、pathjsはシンプルでエレガントなソリューションです。
より柔軟で強力なスタンドアロンルーティングソリューションは、Crossroads.jsで http://millermedeiros.github.com/crossroads.js/ から入手できます。それは非常にきちんと文書化されており、本当に強力なので、あらゆる要件に適合させることができます。
Hashbangアプローチではなく、History APIを使用できますか?
欠点は、古いブラウザではサポートされないことです。ハッシュバンアプローチに頼ることができます(本当に必要な場合)。しかし、これを行う既存のフレームワークは知りません。コンテンツを動的にロードしない(つまり、ユーザーがリンクをクリックするとページ全体がリロードされる)ことを推奨します。履歴APIはますます広くサポートされるようになるため、この「問題」は時間の経過とともに減少します。
実施例 といくつかのドキュメントがあります。アドレスバーからは、ページが「古い学校」(ページ全体の更新)を読み込んでいるように見えますが、コンソール(Firebug、Chrome dev tools)を見ると、コンテンツはAJAXリクエストを介して取得されています。
Mozillaには、いくつかの docs があります。
また、優れた Director があります
Crossroads.js は最高の環境の1つと思われます。主な利点の1つは、ルーティングのためにwindow.locationに依存しないことです。ルーティングとルーティングのみを行うことに固執しているため、軽量です。
あなたが試してみたい他の人: finch.js 、 davisjs (psStateに基づき、JSが失敗した場合に既存のリンクをフォールバックとして使用できます)
更新の追加:2015年3月30日-昨年後半にAngularJSに移行しました。 JQから最高のスイッチを手に入れ、ルーティングなどの多くのモジュールが組み込まれています。