【问题标题】:Should I be rendering html on the server-side or client-side?我应该在服务器端还是客户端呈现 html?
【发布时间】:2011-12-06 00:06:07
【问题描述】:

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

这对我来说真的很奇怪!

问题:

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

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

【问题讨论】:

  • 两者。您支持非 JavaScript 浏览器,并尽可能使用 JavaScript 将工作分流给客户端
  • 我认为这取决于你的建筑——对于博客来说,在服务器端进行所有渲染是有意义的(除非你想了解所有这些hashbang crap)。对于应用程序,我会采用 Brian 建议的实用的混合方法:将预期信息引导到服务器提供的页面中,然后使用 Backbone 的 AJAX 工具更新视图。

标签: templates node.js backbone.js express


【解决方案1】:

使用 Backbone 的典型方式是在客户端做事。您使用客户端模板渲染将模型值绑定到您的小视图模板。它是一种将 HTML/JS 转变为具有实际组件模型的应用程序开发平台的方法。

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

例如,我将 Backbone 与 Rails 一起使用。我的 Rails 视图呈现包含 Backbone 逻辑/视图的服务器端 HTML。然后,我所有的 AJAX 风格的视图渲染都是使用带有模型、视图和模板的 Backbone 进行的,并且模型与位于 Rails 后端的 JSON 服务通信。用户在需要离开页面去做其他事情之前不会看到页面加载。体验非常好。

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

【讨论】:

  • 在服务器端使用 JADE 渲染我的应用程序的核心静态部分,然后在客户端使用主干渲染我的应用程序的动态部分是否有意义?
  • @pagewil 是的。这是一种很好、简洁的方式来表达我想说的话。您可以使用 Backbone 编写一个无需任何服务器端渲染的应用程序。据我了解,大多数人都会像您所建议的那样采用混合方法。
  • fwiw:backbone 非常依赖 jquery,所以你仍然会像以前一样工作。不同之处在于您将把您的 jquery 代码包装在几个主干结构中。我写了一篇关于这样做的博客文章,在这里:lostechies.com/derickbailey/2011/09/26/…
  • node.js 的特点是您可以在客户端和服务器上使用完全相同的模板,因此两者都是免费
  • @pagewil 在客户端和服务器上使用 same 模板引擎的问题不是一个简单的问题。我的解决方案是编写自己的模板语言。我个人知道,灰尘、jQuery-tmpl 和 underscore.template 都适用。
猜你喜欢
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
  • 2019-11-20
  • 2012-01-12
  • 1970-01-01
  • 2020-01-02
  • 2020-02-05
  • 1970-01-01
相关资源
最近更新 更多