【问题标题】:Reuse a backbone application on the server side to render a view on the server side在服务器端重用主干应用程序以在服务器端呈现视图
【发布时间】:2012-08-04 21:21:48
【问题描述】:

我正在开发一个backbone.js 应用程序,其中我的一个视图是具有不同类型子视图的复杂提要。

我必须生成该视图的静态版本以用于电子邮件目的。我正在寻找最实用的解决方案,让我可以从现有代码中尽可能多地重用而不重复

我想出了两个选择:

  1. 使用 php 静态生成视图。这将使我不得不因为不同的语言而重复大量的逻辑。
  2. 设置一个简单的 nodejs http 服务器,它将重用大部分应用程序逻辑来在服务器端创建一个视图。这听起来不错,但我仍然不知道这种解决方案从长远来看会有多实用。对于 ecample,我完全不知道我是否能够在服务器端使用 Jquery 从现有的 html 文件创建布局。

我应该选择这两个选项中的哪一个?为什么?或者也许还有第三个?

【问题讨论】:

  • 好吧,如果我能提供我的意见,即使对 nodejs 没有任何想法,它看起来像是唯一的一个 服务器端 JS 框架 i> 现在已经有足够的社区支持,所以我的建议是使用 nodejs 并查看它的响应。
  • 如何在客户端渲染视图?您是使用像 Mustache 这样的模板引擎生成 HTML 字符串,还是使用 DOM(直接或通过 jQuery)生成页面?如果是后者,那么除非有可以在节点中运行的 DOM 实现(我不知道),否则您的客户端渲染代码将无法在服务器上为您提供帮助。如果是前者,至少如果是 Mustache,那么你可以只运行它的服务器端实现。

标签: php javascript node.js backbone.js


【解决方案1】:

当我开始开发我的第一个backbone.js 应用程序时,我就这个确切的问题争论了很长时间,因为和你一样,我认为复制这么多视图代码是一种浪费。我在 Rails 中工作,我的目标是对服务器上的部分(haml/ruby)和客户端上的模板(haml/coffeescript)使用相同的格式(haml),但事实证明这是不可能的,无论如何也不是很建议。

无论如何,在开发该应用程序几个月后,我得出的结论是重复不是主要问题。如果最终结果只有几页,那么避免重复肯定是不值得的。此外,至少在我的情况下,我从服务器发送的静态页面最终并没有与backbone.js 呈现的模板具有完全相同的结构,因此无论如何它也不是100% 的重复。

不确定这是否有帮助,但无论如何我建议先复制页面,看看实际涉及多少额外工作。更复杂的解决方案(例如使用 nodejs 服务器的 #2)让我觉得有点矫枉过正,除非您真的会以这种方式提供大量页面。

对于它的价值,这里有一些关于 SO 主题的讨论:

Rails Client side / Server side rendering using single template (handlebars or Mustache) with Sammy.js

Template language that works on both server and client

【讨论】:

  • 非常务实的建议,我喜欢。有时在寻找优雅的设计时,我们迷失了通往优秀的道路。
猜你喜欢
  • 1970-01-01
  • 2020-06-23
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2017-07-17
  • 2010-12-14
相关资源
最近更新 更多