繁体   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