handlebars 模板内简单js语句实现
类 ejs :
<% new Date().getDate() %>
或 jade :
#{new Date().getDate()}
类似的?
我在官网看了又看没有发现类似的解决方法。
难道必须要依靠 helpers 来实现?
如果用 helpers 实现的话能否给个安全/高效的方法?谢了
handlebars jade ejs node.js JavaScript
唐伯虎点雷管
11 years, 9 months ago
Answers
HandleBar / DustJS / Mustache 的灵魂就在于 Logic Less 也就是模板内只有模板输出,没有业务逻辑,不允许在模板里执行表达式或者语句
helper也是只一个妥协,最好的方法是在你的业务代码里就写好
ctx.date = new Date().getDate()
传给模板。
至于为什么要从模板中抽离业务逻辑,好处有
- 强迫解耦:所有显示的消息必须完全拼好传给模板。无论是模板还是逻辑都可以轻松地大规模重构而不互相影响
- 语言无关性:因为几乎没有逻辑,多数此类模板引擎都有或很容易在不同的语言中实现,给一套模板在不同语言中运行提供了可能性
当然坏处就是让业务代码变得有些婆婆妈妈,模板束手束脚
-shana
answered 11 years, 9 months ago