服务器和客户端上带有 Handlebars.js 的 Node.js

2024-04-26

我在 Node.js 中有一个应用程序,使用 Expressjs 和 Handlebars 作为模板引擎。

Expressjs 使用布局,然后渲染视图。布局(layout.hbs)如下所示:

<!doctype html>
<html lang="en">
    <head>
    </head>
  <body>
    {{{body}}}
  </body>
</html>

The {{{body}}}当您访问路由时,在 Node.js 中的服务器端被替换。例如:

app.get('/', function(req, res){
   res.render('index'})
})

将取代{{{body}}}带有index.hbs内容的标签。

现在,在客户端,我正在使用 Backbone.js,并希望将 Handlebars 用于通过 Backbone 控制的视图。问题是,因为这些页面已经通过 Handlebars 渲染,所以当我尝试在其中使用 Handlebars(或 Handlebars 中的 Handlebars)时,它不起作用。没有错误,它只是没有用数据替换标签。

有人以前遇到过这个问题或者有解决办法吗?

谢谢你!


您应该使用预编译的客户端模板。它们执行速度更快,并允许您在服务器和客户端上使用相同的模板语言。

  1. 全局安装车把npm install handlebars -g
  2. 预编译您的模板handlebars client-template1.handlebars -f templates.js
  3. 包含模板.js<script src="templates.js"></script>
  4. 执行模板var html = Handlebars.templates["client-template1"](context);

https://stackoverflow.com/a/13884587/8360 https://stackoverflow.com/a/13884587/8360

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器和客户端上带有 Handlebars.js 的 Node.js 的相关文章

随机推荐