我应该在服务器端还是客户端渲染html?

wil*_*age 12 templates node.js express backbone.js

我正在研究Backbone JS并且有点困惑.我习惯于在服务器端编译我的页面html(使用JADE),然后在客户端使用jQuery与这些元素进行交互.许多主干示例建议从空白的html主体开始并在客户端呈现内容.

这对我来说真的很奇怪!

问题:

  1. 我是否必须使用客户端模板?

  2. 我可以使用BackboneJS来控制预先编写的服务器端编译的html吗?

Bri*_*sio 16

使用Backbone的典型方法是在客户端执行操作.您可以使用客户端模板呈现将模型值绑定到小视图模板.这是一种将HTML/JS转换为具有实际组件模型的应用程序开发平台的方法.

但是,这并不意味着你不能或不应该混合你的世界.

例如,我使用Backbone和Rails.My Rails视图呈现包含Backbone逻辑/视图的服务器端HTML.然后,我使用Backbone与模型,视图和模板进行所有AJAX风格的视图渲染,模型与生活在Rails后端的JSON服务进行通信.在用户需要离开页面执行其他操作之前,用户不会看到页面加载.经验非常好.

您当然可以采用该示例并在服务器端呈现模板.我不会去渲染模板服务器端的每个实例,因为模板引擎(包括内置于Backbone/Underscore中的引擎)非常强大.但是,如果你想用服务器端渲染来播种模板,我可以看到它可能有用.

  • 在服务器端使用JADE渲染我的应用程序的核心静态部分,然后在客户端使用主干渲染我的应用程序的动态部分是否有意义? (4认同)
  • fwiw:骨干很依赖jquery,所以你仍然会像以前一样工作.区别在于你将jquery代码包装在一些主干结构中.我写了一篇关于这样做的博客文章:http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone -js / (3认同)
  • node.js的问题是你可以在客户端和服务器上使用完全相同的模板,因此两者都是_free_. (3认同)
  • @pagewil在客户端和服务器上使用_same_模板引擎的问题不是一个简单的问题.我的解决方案是编写自己的模板语言.我个人知道,尘埃,jQuery-tmpl和underscore.template都适用于这两者. (2认同)