handlebars javascript 模板引擎 服務器編譯

選擇它的緣由是它支持服務器端將模板文件編譯爲js代碼,這樣作的好處: html


  • 不會與後端模板語言混淆
  • 省去了每次客戶端編譯

同時具備比mustache更強大的語法 後端

3/25更新:更大的缺點:沒有if( a==b) 只有 if(a),這樣就致使也沒有else if。(if 的實現不是原生js ,而是helper函數調用,效率低)目前沒有很好的解決辦法。
服務器

同時做者有潔癖,意見很難被採納,正式項目使用需謹慎。 函數

但它也有本身的缺點:helper與變量不能從字面上區分(當沒有任何參數的時候,如:{{fun}})。 spa


簡單的解決辦法:在書寫無參數的helper時,附帶一個無用的參數如:{{func 1}} 這樣就會被識別爲helper不會出現if判斷了(能夠不用看下邊的balabala了)
code

以致於在後端編譯的時候出現了一系列使人費解的配置: htm

  -k, --known      Known helpers                                                [string]
  -o, --knownOnly  Known helpers only                                                    [boolean]

string

-k helper_name helper_name 定性爲helper  編譯

-o 沒有用-k 添加過的全部{{string}}都會被理解爲變量 模板

例子:

{{str}}


沒有-k,-o時:

if("str" in helpers){
   helpers.str();
}else{
   html+=data.str;
}


-k str 時:

helpers.str();


有 -k ntstr -o 時:

html+=data.str;


有 
-k str -o  時:
helpers.str();
相關文章
相關標籤/搜索