handlebars 浏览器端 和node端 冲突 ,怎么公用?
发布于 8 年前 作者 yaojaa 4835 次浏览 来自 问答

node用的handlebars 模板引擎,而前端浏览器ajax渲染也想用handlebars 。如: 有一段给ajax数据使用的模板,直接写在页面里。变量用的{{ }}。node 渲染之后会先把模板里的变量给转换了。ajax再用的时候就失效了。

<script id="author-template" type="text/x-handlebars-template">
  <div class="entry">
  <h1>{{title}}</h1>
  <div class="body">
    {{{body}}}
  </div>
</div>
</script>

怎么解决呢?手动改变{{}}符合吗?

7 回复

@p412726700 不是很明白怎么用?能简单讲讲吗

把 script 中间的模板独立成一个文件,然后

app.get('/views/shared/:template.html', function(req, res, next) {
  res.sendFile('views/shared/' + req.query.template + '.hbs');
});
  1. Node端
Handlebars.registerHelper('raw', function(options) {
  return options.fn();
});
  1. 模板
{{{{raw}}}}
<script id="author-template" type="text/x-handlebars-template">
  <div class="entry">
  <h1>{{title}}</h1>
  <div class="body">
    {{{body}}}
  </div>
</div>
</script>
{{{{/raw}}}}

客户端的js代码建议采用webpack打包,在commonJs环境下引入Handlebars,不仅写出代码可读性更高,而且也可以解决你的问题。 webpack兼容性很好,ie6无压力~

谢谢 谢谢 各位太给力了

回到顶部