2010-09-22 24 views
6

我在評估http://github.com/janl/mustache.js鬍鬚裏有什麼我不能做的嗎?

我正在考慮隨着時間的推移它會如何工作。如果我只是建立一個巨大的對象,鬍鬚是否足以將它轉換成任何形式的HTML?

所以,我的問題是。鬍子不能做什麼嗎?

(我的想法是,它僅僅是樹改造從JSON到HTML,但我不知道如何驗證或獲得足夠的信心對賭吧)

進一步澄清

假設我所有的東西都是一個巨大的物體,然後在一次迭代中給了鬍鬚模板; HTML中有什麼不能用鬍子語言表達的東西。

+1

我投票支持社區wiki。 – vol7ron 2010-09-22 03:01:10

+3

考慮到這個名字,我希望你能夠讓女人昏厥,並且投擲出一個不錯的棒球。 – NickHeidke 2011-08-22 14:57:13

回答

8

因爲Mustache只是JavaScript中的一種模板語言,所以您可以做任何您已經可以在JavaScript中執行的操作,並且JavaScript是Turing完成的。所以不,沒有什麼你不能做鬍子;事實上,在Mustache中你沒有辦法用JavaScript做你自己,它只是讓一些事情變得更加方便。

當評估這樣的事情時,而不是確定它可以做什麼和不可以做什麼,問「它是否使我需要做的事情容易」以及「它是否犯我想要的錯誤」避免難以製造。「

例如,評估它的一個方法是是否容易避免cross-site scripting(XSS)攻擊。根據文檔「mustache.js在使用標準雙鬍子語法時確實會漏掉所有的值」,所以它聽起來像在幫助防止這種類型的攻擊方面做得很好。

爲了更好地評估它,您需要提供更多關於您的要求的詳細信息。你想做什麼?你需要整合什麼?

編輯

你的澄清後,也仍然不是十分清楚你在找什麼。即使限制自己擴展單個視圖作爲輸入的單個Mustache模板,您也可以生成任意的任意字符串,因此只需將該字符串作爲輸入即可生成任意HTML。

如果您問是否可以在給定模板和視圖渲染的情況下執行任意計算,那麼答案也是肯定的,因爲Mustache允許您在模板中調用函數,並且寫入這些函數在JavaScript中,這是圖靈完成。

但這兩個都是微不足道的答案;你可以通過提供輸入來產生任何給定的輸出,或者你可以通過使用更高階的部分來進行任何給定的計算。正如我前面所說,有什麼可能做的是它比容易與它有關,並且有什麼錯誤與它做。

我想一個弱點,可能是你正在尋找的類型,如果你需要比鬍鬚系統本身提供的更多的功能,你需要將這些函數作爲視圖的一部分來傳遞。因此,您需要將正在顯示的對象與將用於顯示它的代碼混合。如果您從傳遞到模板的視圖中刪除了調用Javascript的能力,那麼您確實會嚴重限制您可以執行的操作。鑑於這些對象被稱爲「視圖」的事實,看起來在設計上,您將表示邏輯與它們混合在一起;這與模板系統的不同之處在於它允許模板直接從模型對象中提取值。

3

是的,有很多東西你不能做在鬍子。鬍鬚比其他一些全功能的模板系統(比如Django中的)要簡單一些。小鬍子是一個非常小的模板系統,它鼓勵你(通過缺乏特性)實現「無邏輯」模板。這意味着您可以在其他模板系統中執行的某些處理必須在修改發送到模板的數據的代碼中完成。

這不是一個壞模板系統,它只是一個簡單而快速的最小系統。

所以,我想說這個問題的答案是:「是的,有些東西你不能在鬍子(與其他一些模板系統相比)」。

相關問題