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();
相关文章
相关标签/搜索