重用服务器端的主干应用程序以在服务器端呈现视图


Reuse a backbone application on the server side to render a view on the server side

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

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

我想出了两个选择:

  1. 使用php静态生成视图。这将使我不得不重复许多逻辑,因为语言不同
  2. 设置一个简单的nodejshttp服务器,该服务器将重用大部分应用程序逻辑来在服务器端创建视图。这听起来不错,但从长远来看,我仍然不知道这样的解决方案有多实用。例如,我完全不知道是否可以在服务器端使用Jquery从现有的html文件创建布局

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

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

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

不确定这是否有帮助,但无论如何,我建议先复制页面,看看实际需要做多少额外的工作。像#2这样使用nodejs服务器的更复杂的解决方案让我觉得有些过头了,除非你真的会以这种方式提供很多页面。

值得一提的是,以下是关于SO:主题的一些讨论

Rails客户端/服务器端渲染,使用Sammy.js 的单个模板(手柄或Mustache)

适用于服务器和客户端的模板语言