handlebars javascript 模板引擎 服务器编译

选择它的原因是它支持服务器端将模板文件编译为js代码,这样做的好处:


  • 不会与后端模板语言混淆
  • 省去了每次客户端编译

同时具有比mustache更强大的语法

3/25更新:更大的缺点:没有if( a==b) 只有 if(a),这样就导致也没有else if。(if 的实现不是原生js ,而是helper函数调用,效率低)目前没有很好的解决办法。

同时作者有洁癖,意见很难被采纳,正式项目使用需谨慎。

但它也有自己的缺点:helper与变量不能从字面上区分(当没有任何参数的时候,如:{{fun}})。


简单的解决办法:在书写无参数的helper时,附带一个无用的参数如:{{func 1}} 这样就会被识别为helper不会出现if判断了(可以不用看下边的balabala了)

以至于在后端编译的时候出现了一系列令人费解的配置:

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

-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();

你可能感兴趣的:(handlebars,javascript模板引擎)