search

Home  >  Q&A  >  body text

javascript - handlebars 模板内简单js语句实现

ejs :

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

jade :

#{new Date().getDate()}

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

PHP中文网PHP中文网2846 days ago454

reply all(1)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 14:27:13

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

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

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

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

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

    reply
    0
  • Cancelreply