3

重複の可能性:
seo/ブックマークに Backbone.js プッシュステートを使用する場合、サーバーでバックボーン ビュー/ルートを再利用する

私はBackbone.jsと他のモジュールの束を使用して、 Single Page Appメソッドを処理しています。私の目標:

  1. サイトはSEOフレンドリーでなければなりません

  2. サーバーは HTML コードをクライアントにブートストラップし、データは JSON モデルに保存されます。

  3. サブシーケンス アクションはすべて Javascript によって処理されます (たとえば、新しい画面のレンダリング、バックボーン ルーターを使用した URL の変更など)。

私の質問は次のとおりです。各ルーターの URL で Javascript に合わせてサーバーを構成し、それをDRYに保つ方法は?

たとえば、ユーザーが にwwww.mysite.comアクセスしてからリンクをクリックして に移動する場合、最初のロードで直接 にwww.mysite.com/page/2移動するのと同じでなければなりません。www.mysite.com/page/2

これは古いトピックのようですが、Javascript でテンプレート コードを繰り返さずにサーバー側でこれを処理するための最良の方法について、確固たるリソースが見つかりません。

私が考えている 1 つのオプションは、バックエンドを Node.js と別のサーバーに分割して、API のみを処理することです。Node.js サーバーは、何らかの形でテンプレート構築コードを Javascript フロントエンドとして共有します。

とにかく、ここでそのような質問をするのが適切でない場合は、アドバイスと謝罪を聞くのが大好きです.

4

1 に答える 1

1

ノード サーバーをデータへの単なる REST インターフェイスとして扱います。次に、クライアント側で他のすべてを処理します。require.jsとjadeなどのテンプレート プラグインを使用してテンプレートをロードし、Backbone.Router を使用してすべてのルーティングを行い、Backbone.sync メソッド ( collection.fetch().)を使用してモデルとコレクションにアクセスできます。

たとえば、ユーザーが「mysite.com/#page/2」にアクセスすると、バックボーン ルーターをロードして、そのページにあるテンプレートを表示することができます。そのページに表示する製品のリストがたまたま必要になった場合は、productコレクションにproduct.fetch(). これにより、「/products」または で指定された URL に GET リクエストが送信されproduct.urlます。次に、ノード サーバーは、コレクションが属するビュー自体のレンダリングに使用できる製品オブジェクトの配列で応答します。

于 2012-12-18T21:51:00.893 に答える