handlebars 模板内简单js语句实现


ejs :


 <% new Date().getDate() %>

jade :


 #{new Date().getDate()}

类似的?
我在官网看了又看没有发现类似的解决方法。
难道必须要依靠 helpers 来实现?
如果用 helpers 实现的话能否给个安全/高效的方法?谢了

handlebars jade ejs node.js JavaScript

唐伯虎点雷管 11 years, 8 months ago

HandleBar / DustJS / Mustache 的灵魂就在于 Logic Less 也就是模板内只有模板输出,没有业务逻辑,不允许在模板里执行表达式或者语句

helper也是只一个妥协,最好的方法是在你的业务代码里就写好 ctx.date = new Date().getDate() 传给模板。

至于为什么要从模板中抽离业务逻辑,好处有

  • 强迫解耦:所有显示的消息必须完全拼好传给模板。无论是模板还是逻辑都可以轻松地大规模重构而不互相影响
  • 语言无关性:因为几乎没有逻辑,多数此类模板引擎都有或很容易在不同的语言中实现,给一套模板在不同语言中运行提供了可能性

当然坏处就是让业务代码变得有些婆婆妈妈,模板束手束脚

-shana answered 11 years, 8 months ago

Your Answer