2011-02-26 21 views
11

我正在創建一項服務,希望允許最終用戶編輯允許訪問特定「變量」以包含在模板中的網頁的HTML模板。Rails最終用戶模板引擎:液體vs鬍鬚與其他?

我知道液體是爲這個目的而設計的,是安全的(至少比較安全),並且在大量生產中使用。但是,與類似小鬍子的東西相比,我覺得最終用戶的語言相當複雜。

小鬍子聽起來不錯,但我擔心安全......它是否曾用於最終用戶模板?

基本上我尋找一個模板引擎,我可以使用W/Rails的最終用戶是:

  1. 安全 - 不會允許的代碼由用戶執行......至少不服務器。用戶將被允許插入客戶端JavaScript。
  2. 功能強大 - 允許最終用戶使用提供的「變量」和#1範圍內的任何網頁創建幾乎任何網頁。簡單 - 語法清晰,易於最終用戶應用
  3. 如果支持在JavaScript和其他語言中呈現模板語法,則爲獎勵分數。

液體符合1 & 2,但不是3-4。小鬍子滿足2-4,但我不確定#1,這是不可談判的。

非常感謝任何見解,經驗或意見。

回答

3

小鬍子對於插值來說非常棒,我無法想象它會將您暴露給服務器端漏洞,如果您將它用於Javascript評估。這是最簡單,最強大的選擇。我不知道非程序員會理解它,但我確信它比Liquid更簡單。

另一種選擇是使用像BBcode這樣的現有更簡單的用戶標記集或像TinyMCE這樣的富文本編輯庫。這些功能大大減少,但對於普通人來說更容易使用。

+1

我真的需要在服務器端進行渲染,原因有兩個: 1.谷歌和其他搜索機器人需要能夠爲已經展開的「變量」編制索引的完整渲染頁面 2.雖然有JS啓用是相當普遍的,現在我不想讓它成爲應用程序的要求 – marcusmateus 2011-02-27 02:13:22

+0

5分鐘? @Winfield需要澄清#1。不擔心模板中未轉義的字符串,因爲我在模板中允許使用JS ..它在另一個論壇中引起了關注。 可是,我真的需要在服務器端渲染髮生的原因有兩個: 1.谷歌和其他搜索機器人必須能夠索引完全呈現的頁面瓦特/「變量」已經展開 2 。雖然啓用JS是相當普遍現在我不想讓它成爲應用程序的要求 我同意BBcode/TinyMCE更簡單,但它使用它們真的會從應用程序的力量(#2 ) – marcusmateus 2011-02-27 02:25:01

+0

只要你小心你在視圖中公開的方法,我認爲鬍鬚將是安全的,並很好地滿足你的需求。語法並不可怕;它可能就像模板引擎一樣容易。查看[示例](http://mustache.github.com/#demo)作爲示例。 – 2011-02-27 07:58:29