我有一个复杂的非SPA (非单页应用程序),一个经典的多页网站,我想在其中使用Backbone.js。
应用程序的服务器端是Django提供的。
我的问题是:由于SEO的原因,我必须加载每个html内容服务器端,使用django模板,但是为了获得主干的完整的,我需要下划线的模板(或工具栏)来刷新主干的视图。
因此,我必须用不同的技术和钩子编写相同的模板两次。
我怎么才能避免这种情况?
发布于 2013-10-15 13:19:51
实际上,您可以编写一个单页应用程序,但仍然支持SEO。主干的路由器通过为应用程序的每个状态创建一个单独的URL来实现这一点。整个应用程序的链接将被爬行。谷歌最近在搜索SPA方面做得很好。我相信你的决定,不创建你的网站作为一个SPA是影响了陈腐的意见。
发布于 2013-10-15 16:20:06
基本上,您可以这样做,您需要确保的是,您不需要第一次调用呈现视图。
假设我的页面有这个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和主干两者的好处。我想像你这样流行的web应用程序确实遵循类似的方法(可能不使用主干)。
https://stackoverflow.com/questions/19379470
复制相似问题