美文网首页程序员
underscore.js簡單有效的模板引擎

underscore.js簡單有效的模板引擎

作者: rewen | 来源:发表于2014-12-02 13:55 被阅读658次

如今Javascript的模板引擎有很多,多到難以選擇,以至於有個頁面幫助你選擇模板引擎。它們的設計目標和特性也迥異,有基於字符串替換,也有基於Dom文檔樹操作。有的設計於瀏覽器端,也有的用於後端Node.js,當然還有前後端都支持如dust.js。如果你要開發單頁面應用程序SPA,流行的框架如AngularJS和EmberJS都包含了雙向數據綁定(two way data binding),因而不需要模板引擎了。

我近期開發熱聞網時,也面臨模板引擎的選擇問題。我個人很喜歡Angularjs這種雙向數據綁定,但是由於這個項目不是單頁面應用程序,用AngularJS不適合。此外Handlebars.js也很火,可是它的變量標記是{{.}},這與我後端的Jinja2模板標記衝突,不予考慮。最後我決定使用小而精的Underscore.js庫。Underscore.js因它提供的大量函數式編程特性而聞名。我這裏僅討論使用它裏面的template函數做模板引擎。然而,官方文檔中提到的例子太過簡單。

var compiled = _.template("hello: <%= name %>");

如上,模板只是一個JS字符串,不適合複雜的模板。幸好我之前看過另一種用法,更加優雅。將模板的內容嵌入一個script標籤中,如下所示。

<script type="text/template" id="comment">

<%- comment.user %> post <%- comment.text %>.
</script>

然後在正常的腳本中獲取這段模板內容,並生成渲染函數。

<script>

var render = _.template($('script#comment').html(), {variable: 'comment'});

var data = { user: 'ab', text: 'hello' };
var result = render(data);

上面片段中result便是參數渲染後的結果了。是不是簡單有效呢?

相关文章

  • underscore.js簡單有效的模板引擎

    如今Javascript的模板引擎有很多,多到難以選擇,以至於有個頁面幫助你選擇模板引擎。它們的設計目標和特性也迥...

  • Ajax 套用模板实现类瀑布流

    设计的技术: 模板引擎技术 类似JQuery的 Underscore.js 实现思路: 建立一个模板 使用Unde...

  • 簡簡單單。

    想做一個熱愛生活的女子,希望醒來後你可以為我做哪怕一年一次的早餐。然後問著窗台花卉的芬芳,哼著歌為它們澆水。一番打...

  • 簡簡單單

    >櫻花飄落是秒速五釐米,不知道你可曾聽過? 三年的時間足夠一個人做什麼? 三年的時間能夠改變一個人嗎? 三年……究...

  • 簡簡單單的2018

    “肥”宅快樂年 頂著肝爆的風險,熬夜已成日常,隨著“再戰一回合”的想法一次又一次在我腦海中出現,我知道這是屬於我的...

  • 簡單的孩子

    簡單的孩子 從不去奢求的太多 心簡單了這世界 就會簡單了許多 該忙碌時就忙碌 該歇息時就歇息 偶而品位簡單的茶 吃...

  • 2文字简单

    我想長這樣一個腦袋,簡簡單單只有文字…

  • 竹報平安

    簡單!

  • 簡單

    愛 純粹 喜歡 單純 習慣 你都在

  • 簡單

    簡單帶來快樂

网友评论

    本文标题:underscore.js簡單有效的模板引擎

    本文链接:https://www.haomeiwen.com/subject/hlugtttx.html