1
spritevan 2012-05-03 13:38:14 +08:00
backbone 就好, 不纠结 SEO
|
2
reorx 2012-05-03 15:30:22 +08:00
我自己只用过Backbone,所以说一下Backbone的处理方式,你来看看合不合适。
首先有一点要说到的是,如果客户端要做得高大全,在代码中使用到某一种模式和理念几乎是必然的事情了。记得以前只会用jQuery的时候,经常做的事情就是要在一个效果结束后动态地给它所生成或影响到的元素绑定或解绑事件,有时一个ajax要包好几层回调函数,代码会一片混乱,痛苦地不行。于是开始意识到框架的好处。有时会觉得框架有所限制,但它更好地是给你提供了一个可参考的整体解决方案,因为是前人智慧的结晶,总好过自己从头摸索。若真有一天觉得它不能满足需求了,自己也可以整合自己学到的东西来造一个新的轮子。 那么就是框架的选择问题了。一般的js框架都是应用了一种或几种设计模式的。对于这些知识我了解的比较少,由于以前作Django开发的时候接触过MVC的概念,又更喜欢OOP的编程模式,便挑选了Backbone。 Backbone有两个特点,一是让你尽可能地将数据处理和逻辑分离开,写Model的时候不要考虑View的存在,反之亦然。二是提倡尽量将函数写在一个类中。即便一个View在整个网站中只可能存在一个实例,也要写在类中将它实例化出来。 对于ajax和history的处理,在Router的控制下,页面的前进后退不会发出新的请求。具体的实现方式我没有看太多它的代码,想来基本能满足你的需求。 事件绑定的方式非常地赞,可以直接用jQuery选择器映射到类中的某个方法。 模板我觉得应该不是问题,一般在页面上加载一份然后用jQuery来拿就可以了,为什么需要做两份呢。 总得来说,虽然你写的问题很纠结,我也似乎没有作针对性的回答,但对clipcan的直觉告诉我你应该使用一个MVC框架。当然,以上说的都仅作参考,js我非常业余,Backbone也只写过一个项目,不过我觉得人总是得做一步看一步嘛,不可能一开始就考虑全所有的问题,也不可能有一个完美的解决方案,先上再说 :) |
3
aligo OP js mvc框架是很好,可是view都是写在前端了,爬虫什么的爬不了,而且后端能做的一些fancy的东西挪到前端来也不行了
模版的话倒是有想过给后端模版输入一个dummy对象,用来生成mustache式的前端模版 然后没了,主要还是爬虫的问题囧 |
4
airyland 2012-05-03 15:44:56 +08:00
|
5
aligo OP @airyland 我一直在让程序自己ping sitemap,只不过如果只做backbone的话,无论是hashbang还是history api,爬虫是抓取不到任何东西的啊
除非是爬虫支持dom和js。。。 |
6
reorx 2012-05-03 15:51:54 +08:00
|
7
airyland 2012-05-03 16:06:02 +08:00
@reorx @aligo 对的,上面没说清楚,爬虫没那么高级,所以需要至少写个简单的页面做静态输出。
www.example.com/ajax.html#!key=value 对应于 www.example.com/ajax.html?_escaped_fragment_=key=value |
8
aligo OP @airyland 恩,就是这样。例如我在http://vivo-dev.aligo.me/中实现的,如果直接点下去就是异步的效果,并且地址会变成http://vivo-dev.aligo.me/planets/0000/topics/3f3229ef或者低级浏览器里hashbang的形式,而单独打开访问就是纯静态。包括编辑回复之类的地方也是如此
但是这是一个简单的论坛程序,目前在做的是一个稍微复杂点,而且不是单一屏幕模式的东西,如果这么在做觉得不太好维护。 总之想做一个比较酷的感觉,这两周在各种各样的方向乱开科技树。。。 |