我发现的主要区别是:
Handlebars添加了#if, #unless, #with和#each Handlebars添加helper 编译了车把模板(小胡子也可以) 手柄支持路径 允许在块中使用{{this}}(输出当前项的字符串值) Handlebars.SafeString()(可能还有其他一些方法) 把手的速度快2到7倍 胡子支持倒立部分(即if !x…)
(如有错误,请指正。)
还有其他我忽略的主要区别吗?
我发现的主要区别是:
Handlebars添加了#if, #unless, #with和#each Handlebars添加helper 编译了车把模板(小胡子也可以) 手柄支持路径 允许在块中使用{{this}}(输出当前项的字符串值) Handlebars.SafeString()(可能还有其他一些方法) 把手的速度快2到7倍 胡子支持倒立部分(即if !x…)
(如有错误,请指正。)
还有其他我忽略的主要区别吗?
当前回答
注意:这个答案已经过时了。发布的时候是这样,但现在不是了。
Mustache有许多语言的解释器,而Handlebars只有Javascript。
其他回答
你已经完成了很多,但是Mustache模板也可以编译。
Mustache缺少帮助程序和更高级的模块,因为它努力做到无逻辑。句柄的自定义助手可能非常有用,但通常会在模板中引入逻辑。
Mustache有许多不同的编译器(JavaScript、Ruby、Python、C等)。Handlebars开始于JavaScript,现在有像django-handlebars, Handlebars .java, Handlebars -ruby, lightncandy (PHP)和Handlebars -objc这样的项目。
胡子优点:
非常受欢迎的选择,拥有一个庞大而活跃的社区。 服务器端支持多种语言,包括Java。 无逻辑模板在迫使您将表示与逻辑分离方面做得很好。 简洁的语法使模板易于构建、阅读和维护。
胡子缺点:
有点太缺乏逻辑:基本任务(例如用不同的CSS类标记交替行)是困难的。 视图逻辑通常被推回服务器或实现为“lambda”(可调用函数)。 为了让lambdas在客户机和服务器上工作,必须用JavaScript编写它们。
车把优点:
无逻辑模板在迫使您将表示与逻辑分离方面做得很好。 简洁的语法使模板易于构建、阅读和维护。 编译而不是解释模板。 对路径的支持比mustache更好(即深入上下文对象)。 对全球帮手的支持比胡子更好。
车把缺点:
需要服务器端JavaScript在服务器上呈现。
来源:客户端模板:mustache, handlebars, dust.js等等
一个更微妙的区别是在{{#property}}中处理假值…{{/财产}}。大多数mustache实现在这里会遵循JS的错误,如果属性为"或'0',则不呈现块。
句柄将呈现“和0”的块,但不会呈现其他虚假值。这可能会在迁移模板时带来一些麻烦。
注意:这个答案已经过时了。发布的时候是这样,但现在不是了。
Mustache有许多语言的解释器,而Handlebars只有Javascript。
-除了对车把使用"this",对mustache使用变量块内的嵌套变量,你也可以对mustache使用块内的嵌套点:
{{#variable}}<span class="text">{{.}}</span>{{/variable}}