2011-08-17 4 views
9

私は単一のページアプリケーションのバックボーンでいくつかのデューデリジェンスを行っていますが、同じビュー/ルートgoogleがpushstate URLを訪問するとき、または直接アクセスするときに、サーバはクライアントのバックボーンによって生成されるものとまったく同じHTMLを生成することができるように、サーバ側のクライアントから取得する。Backbone.jsを使用してサーバー上でバックボーンビュー/ルートを再利用するseo/bookmarkingのためのpushstate

ビュー/ルートの2つの別々のセットを維持する必要があるのは、1つはクライアント上、もう1つはサーバー上です。私はgithubのバックノードプロジェクトを見てきましたが、この点は少し間違っていて、同じバックボーンルータを2回書く必要があります。

バックボーンでpushstate URLを使用しているときに、サーバーから同じビューを提供する必要がある場合、一般的にどのようにユーザーがこの問題を処理しているのだろうか?人々がコードを複製しているのですか、それとも良い方法がありますか?

答えて

5

私はまだこれを試していないが、Node.jsのバックボーンを使用して、これらのアイデアは役立つかもしれない:

http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/

http://bennolan.com/2010/08/13/pushstate-and-nodejs.html

それはので、あなたと同じを書いていないようにする基本的には唯一の方法node.jsサーバーとフロントエンドクライアントの両方で同じルーティング/モデルコードを共有することは2回です。サーバー側(Rubyなど)で何か他のものを使用している場合は、アプリケーションサーバーの前にnode.jsを配置する必要があります。次に、新しいクライアント(プッシュ状態とクライアントj)に対してnode.jsプロキシを作成し、古い/ボットクライアントに対して実際にレンダリングを行います。

もう一つのオプションは、jQuery Mobileが行うもので、Hijaxメソッドです。たくさんのHTML5ページを作成するというアイデアです(見たい場合はルーティングを見なければなりません)。

万全を期すために、あなたはAJAX Googleがクロールする方法に注意する必要があります。このプロジェクトは、まさにあなたがやろうとしているん何 http://code.google.com/web/ajaxcrawling/docs/getting-started.html

+3

私はちょうどhttp://www.idiotz.nl/2011/08/28/backbone-everywhere/を見つけました。私はこれがちょうど私が探しているものだと思う、彼はバックボーンがサーバー側で働いているので、すべてのビューがサーバー側にレンダリングされ、そこからクライアントが引き継ぐので、seoの問題が解決されます。 – cjroebuck

+0

ええ、今やたくさんのnodejsフレームワークがあります。私はこれについてブログに書いています(私のプロフィールを見てください)。そして、私はexpress + backbone.js + persistenceで遊んでいました。 –

関連する問題