模板引擎--handlebars

handlebar簡介

Handlebar是javascript的引擎模板,經過對view和data的分離來快速的構建web模板。使用handlebar模塊能夠在加載時被預編譯,而不是等客戶端執行到某段代碼時候,再進行編譯。這就能夠保證模塊加載和運行的速度。
注意:
{{{}}} -->不會進行編碼轉換,直接進行替換,即這裏寫html標籤,也會將標籤輸出。
{{}} -->會作html編碼轉換。
handlerbar是有層級轉換的
例子:javascript

{{#post}}
  {{#if author.length}}
    <h3>{{title}}</h3>
    <ul>
      {{#each author}}
        <li>{{../title}}'s author is {{name}}</li>
      {{/each}}
    </ul>
  {{/if}}
{{/post}}

handlebar中兩個重要的文件:layouts和partialshtml

clipboard.png

layouts

layout.hb屬於佈局文件,全部跳轉頁面都會經過這個文件來渲染頁面內容。在這個文件中,能夠寫全部頁面都會引用的內容。
例如:java

<meta name="format-detection" content="telephone=no,email=no,address=no"/>

在可能須要動態渲染的位置,加上
{{#block "body"}}
{{/block}}
等內容。web

partials

用來存放公共引用的。如導航頭,底部。
在動態page文件中的,引用方法爲{{ > head.hb}} (head.hb是partials中對應的文件名)緩存

helper

主要功能:在頁面上預設一個位置,動態的渲染這個位置的代碼。
咱們引用的helper,有內置的if,each,unless,with等。若想實現複雜的判斷邏輯,須要本身定義helper。
可是過多複雜的邏輯,就模糊了模板的專一點,違背了本來的數據和表現分離的出發點。
模板-----應專一於數據綁定
數據層---應專一於作邏輯的預處理,並將結果返回給模板。app

注意:
模板引擎會緩存已編譯的模板,只有模板發生改變,纔會從新編譯和從新緩存。
app.set('view cache',true);less

相關文章
相關標籤/搜索