我正在渲染新闻Feed。
我打算将Backbone.js用于我的javascript东西,因为我厌倦了用JQuery手动DOM绑定。
所以现在我正在考虑两个选项。
当用户加载页面时,“新闻订阅源”容器为空。但是该页面触发了一个javascript,它将新闻的项目呈现在屏幕上。这将与Backbone的模型和集合等相关联。
当用户加载页面时,服务器会呈现“新闻源”。即使javascript被关闭,项目仍会显示,因为服务器通过模板引擎呈现它。
我想使用Backbone.js来保持我的javascript干净。那么,我应该选择#1,对吧?但#1比#2复杂得多。
顺便说一句,我问这个问题的原因是因为我不想使用Backbone.js的路由功能。我会单独加载每个页面,并使用Backbone作为页面的各个项目。换句话说,我正在使用Backbone.js。
如果我要使用Backbone.js的路由功能,那么明显的答案是#1,对吧?但是我担心建立路线系统需要花费太多时间,时间也应该平衡到我的等式中。
如果这个问题令人困惑,我很抱歉:我只是想知道使用Backbone.js的最佳做法并节省时间。
答案 0 :(得分:24)
两者都有优点和缺点,所以我会这样说:根据你的要求,选择最适合你的选项。
我不知道Backbone.js,所以我将继续回答客户端与服务器端的渲染。
这种方法允许您在服务器端快速渲染结构,然后让用户的JavaScript获取实际内容。
优点:
缺点:
这种方法允许用户一次接收所有内容,并且也适用于没有良好JavaScript支持的浏览器,但这也意味着在浏览器获得第一个<html>
标记之前,所有内容都需要更长的时间。< / p>
优点:
缺点:
哪些对您的要求最重要?这应该告诉你的决定。
答案 1 :(得分:0)
我不知道骨干,但这里有一个简单的想法:如果可能和安全,在客户端而不是服务器上做所有事情。这样,服务器就可以完成更少的工作,因此可以处理更多的连接并更好地扩展。
答案 2 :(得分:0)
但#1比#2复杂得多。
不是真的。一旦你掌握了Backbone和jQuery以及客户端模板(也可能将CoffeeScript投入混合),那么这并不是很难。事实上,它大大简化了您的服务器代码,因为现在删除了所有与显示相关的功能。您甚至可以在同一服务器上运行不同的客户端(例如移动版本)。
即使javascript被关闭,项目仍会显示,因为服务器通过模板引擎呈现它。
这是重要的考虑因素。如果你想支持没有Javascript的用户,那么你需要一个非JS版本。
如果您已经拥有非JS版本,您可以考虑是否仍然需要“增强版”,如果您需要,如果您想重新使用服务器端模板,那么您已经进行了编码和测试并且需要维护或者复制客户端的工作,这增加了开发成本,但正如您所说,可以提供更好的体验并降低服务器上的负载(尽管我无法想象获取渲染数据与获取XML数据会使得很大的不同)。
如果您不需要支持没有Javascript的用户,那么请务必在客户端上进行渲染。
答案 3 :(得分:0)
我认为Backbone的目标是组织一个Javascript页内客户端应用程序。但首先你应该在下一个声明中采取立场:
即使关闭了javascript,网络应用仍然可以在“后退模式”下工作。
那是你的要求之一吗? (这不是一个简单的要求。)如果不是,那么我会建议你:“做更多的JS”。但如果是,那么我相信你最好的朋友是jQuery load function。
注意:我是一名Java程序员,并且有很多服务器端框架能够编写在启用js时可以正常工作的应用程序,而在没有启用js时可以启用post-backs。我认为Wicket和Echo2是其中两个,但这意味着它们是服务器端库...