2012-08-04 61 views
2

我正在开发一个backbone.js应用程序,其中我的一个视图是一个包含不同类型子视图的复合提要。重新使用服务器端的骨干应用程序来渲染服务器端的视图

我将不得不生成该视图的静态版本,以用于电子邮件的目的。我在寻找最实用的解决方案,让我从现有的代码,就像我可以重复使用不重复

我想出了两个选项:

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

他应该选择哪两个选项?为什么?或者也许还有第三个?

+0

好吧,如果我可以提供我的意见,即使没有任何想法_nodejs_看起来它是目前唯一有足够社区支持的_server side JS framework_,所以我的建议是使用nodejs并查看它是如何响应的。 – fguillen 2012-08-04 23:16:04

+0

你如何渲染客户端的视图?您是使用像Mustache这样的模板引擎生成HTML字符串,还是使用DOM(直接或通过jQuery)生成页面?如果是后者,那么除非有一个DOM实现,否则你可以在node中运行(我不知道),那么你的客户端渲染代码将不会帮助你在服务器上。如果它是前者,至少尤其是胡须,那么你可以运行它的服务器端实现。 – JMM 2012-08-05 16:35:38

回答

2

当我开始研究我的第一个backbone.js应用程序时,我讨论了这个确切问题很长一段时间,因为像你一样,我认为复制这么多的视图代码是浪费时间。我正在使用rails,我的目标是在服务器(haml/ruby​​)和客户端模板(haml/coffeescript)上使用相同的格式(haml),但事实证明这是不可能的,反正不是很为宜。

无论如何,虽然已经在应用程序上工作了好几个月,但我得出的结论是重复不是主要问题。如果最终结果只有几页,它肯定不值得试图避免重复。另外,至少在我的情况下,我从服务器发送的静态页面并不会与backbone.js呈现的模板具有完全相同的结构,因此无论如何都不是100%的重复。

不知道这是否有帮助,但无论如何我建议首先复制页面,看看实际涉及多少额外的工作。更复杂的解决方案,比如#2和nodejs服务器,除非你真的会以这种方式服务于大量页面,否则会让我感到不知所措。

对于它的价值,这里有上这样的话题的一些讨论:

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

Template language that works on both server and client

+0

非常实用的建议,我喜欢。有时候寻找优雅的设计,我们失去了一条好路径。 – fguillen 2012-08-05 01:01:00

+0

我的情绪正是如此。 – 2012-08-05 01:38:39