Ember.js与胡子库的兼容性

时间:2012-09-22 01:37:13

标签: php ember.js handlebars.js mustache

我目前正在开发一个PHP网站,我计划与Mustache PHP一起使用,以便我可以使用与我的PHP呈现相同的胡子模板文件以及我的javascript(ajax驱动)页面更新。在searching around之后,我无法找到适用于PHP的handlebars.js等效库,尽管我更喜欢使用把手来处理所有内容。

我正在决定是否使用Ember.js或Backbone.js。我知道Ember使用了把手,而且把手使用了mustache.js中没有的语法和功能。我也明白handlebars.js可以很好地使用胡子模板。

我倾向于Ember并愿意更新Mustache PHP以便在必要时使用Handlebars.js。

但首先,Ember.js能否直接使用胡子模板?或者Ember的正确利用是否也意味着使用只有把手支撑的模板功能?

如果我必须分叉PHP库,那么我将首先想要添加的主要把手功能是什么?

在此先感谢,这将真正帮助我决定使用Ember.js是否值得。

2 个答案:

答案 0 :(得分:1)

Handlebar.js在Mustache(.php / .js)语法上添加了一些“帮助器”......但是这些完全没用,因为Mustache已经很好地做到了这一点:

{{#each xyz}}...{{/each}} is the same as {{#xyz}}...{{/xyz}} in Mustache.
{{#if xyz}}...{{/if}}     is the same as {{#xyz}}...{{/xyz}} in Mustache.
{{#with xyz}}...{{/with}} is the same as {{#xyz}}...{{/xyz}} in Mustache.

相反:

{{#unless xyz}}...{{/unless}} is the same as {{^xyz}}...{{/xyz}} in Mustache.

Ember.js看起来非常像handlebar.js,而Backbone.js似乎为逻辑无关的Mustache-Kind渲染了一些输出添加了很多逻辑。

我在一些小型和大型网站上使用Mustache(php)。 Ajax调用导致Mustache填写了一些html,jQuery用结果替换了一些dom元素。它的工作就像一个魅力。

对我来说:不要向Mustache添加逻辑,只需从Handlebar.js中删除逻辑(我想它也可以在没有那些“助手”的情况下工作。)

答案 1 :(得分:0)

我不需要使用Ember,但确实注意到在我发布此问题后不久,其他人开始了Handlebars parsing within PHPthis library is another approach的项目。这些库是我正在寻找的解决方案,因为只使用小胡子渲染器治疗把手模板有很多潜在的并发症。