1

私は Backbone.js を使用したい複雑な SPA (シングル ページ アプリケーションではない)、古典的なマルチページ サイトを持っています。

アプリのサーバー側は Django を使用しています。

私の問題は、SEOの理由から、django templates を使用してすべての html コンテンツをサーバー側でロードする必要があることですが、Backbone の機能を最大限に活用するには、バックボーンのビューを更新するためにアンダースコアのテンプレート (またはハンドルバー) が必要です。

そのため、異なるテクノロジとフックを使用して、同じテンプレートを 2 回作成する必要があります。

どうすればこれを回避できますか?

4

2 に答える 2

1

実際、単一ページのアプリケーションを作成しても SEO をサポートできます。Backbone のルーターは、アプリケーションの状態ごとに個別の URL を作成することでこれを実現します。アプリケーション全体のリンクがクロールされます。最近の Google は、SPA のクロールをうまく行っています。サイトを SPA として作成しないというあなたの決定は、陳腐な意見に影響されたと思います。

于 2013-10-15T13:19:51.497 に答える
1

基本的にはそれを行うことができます。確認する必要があるのは、ビューで初めて render を呼び出さないことだけです。

私のページにこのhtmlがあるとしましょう

<ul class="my-list">
 <li><a href="#">do something</a></li>
 <li><a href="#">do something</a></li>
 <li><a href="#">do something</a></li>
</ul>

最初にビューを定義します

var MyView =  Backbone.View.extend({
  el:'.my-list',
  render:function(){
    this.collection.each(this.addItem, this);
  },
  addItem:function(){
    //do adding logic here
  }
})

使用してインスタンス化しますが、レンダリングを呼び出さないでください

 var myView = new MyView({
    collection: myCollection //any collection or model you like here
 })

ビューを更新したいときはいつでも、 myView.render を呼び出してください。これにより、SEO とバックボーンの両方のメリットを得ることができます。You Tube のような人気のある Web アプリケーションも同様のアプローチに従っていると思います (Backbone を使用していない可能性があります)。

于 2013-10-15T16:20:06.940 に答える