2012-08-04 59 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