簡體   English   中英

是否可以避免使用Django和Backbone.js雙重模板?

[英]Is having Django and Backbone.js double templates avoidable?

我有一個復雜的不是SPA(不是單頁應用程序)的經典多頁站點,我想在其中使用Backbone.js。

該應用程序的服務器端由Django驅動。

我的問題是:出於SEO的原因, 我必須使用django模板加載服務器端的每個html內容 ,但是要獲得Backbone的全部功能, 我需要使用下划線的模板(或車把)來刷新主干網的視圖

因此,我必須用相同的模板和鈎子兩次編寫相同的模板。

如何避免這種情況?

實際上,您可以編寫單頁應用程序,並且仍然支持SEO。 骨干路由器通過為應用程序的每種狀態創建一個單獨的URL來實現此目的。 您在整個應用程序中的鏈接將被爬網。 如今,Google在抓取SPA方面做得很好。 我認為您決定不將自己的網站創建為SPA的決定受到了過時意見的影響。

基本上,您可以做到這一點,只需確保您不第一次在視圖上調用渲染。

說我的頁面有這個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
  }
})

實例化使用,但不調用render

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

每當您要更新視圖時,請調用myView.render。 通過這種方式,您可以獲得SEO和骨干網的好處。 我猜像You Tube這樣的流行Web應用程序確實遵循類似的方法(可能未使用Backbone)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM