2

私は単一ページの Web アプリを構築しています (ページ/状態間を移動する際の柔軟性と速度が必要なため) が、ルーティング/URL に苦労しています ...

従来のパラダイムでは、次のような URL があります。

example.com/tools/population-tool/#currentYear=1950
example.com/tools/income-tool/#country=usa
example.com/nice-story/
example.com/nice-chapter/nice-story/

これを、対応するルートのテンプレートとコントローラーをロードするルーター (たとえば、バックボーンを使用) に置き換えたいと思います。

必要なページ情報を格納するページ オブジェクトを用意することを考えています。

pages : {
  tools : {
    template : "#tools",
    breadcrumb : ["Home","Tools"]
  }
  nice-story : {
    template : "#nice-story",
    breadcrumb : ["Home","Stories","Nice Story"]
  }  
}

ルーターを使用して、次のような URL を指定して、適切なコンテンツとページの状態をロードしたいと思います。

example.com/#!/tools/population-tool/?currentYear=1950

または、Hashbang を使用しない場合は次のようにします。

example.com/tools/population-tool/?currentYear=1950

このルーティングをどのように整理して、URL スキームが適切でありながら柔軟であり、リダイレクトや新しいクエリ文字列パラメーターを許可できるようにしますか?

4

1 に答える 1

2

これはあなたの質問に対する完全な答えではありませんが、バックボーンに関するいくつかのヒント...

ルーターでloadPage()のようなメソッドを定義すると、メインページのコンテナーを空にして、アプリの各「ページ」に対応するビューに置き換えることができます。各ルートアクションはそれを呼び出して、正しいビューをロードできます。

疑似クエリ文字列を使用する場合は、バックボーンルートに明示的にマッチャーを追加してください。例えば:

'/tools/population-tool/?*params'

これにより、params文字列全体を最初のパラメータとしてルートアクションが呼び出されます。あなたはそれを解析する必要があります...

于 2011-11-18T18:43:16.610 に答える