一尘不染

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

node.js

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

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

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

{{{body}}}当您访问路径被替换服务器端的node.js内。例如:

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

{{{body}}}标记替换为index.hbs的内容。

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

有没有人遇到过这个问题或有任何想法可以解决?

谢谢!


阅读 366

收藏
2020-07-07

共1个答案

一尘不染

是的,这是一个棘手的问题—类似于shell脚本中的引用问题,这些问题变成了引用引号的老鼠巢。

我的解决方案是在expressjs(服务器端)中使用jade(la
haml)为客户端输出基于车把的模板。这样,服务器使用一种语法(jade),而客户端使用另一种语法(handlebars)。我和你处在同一个十字路口,所以我面临着同样的挑战。

当然,翡翠不是必需的(尽管它已经为expressjs准备好了)。您可以为服务器选择任何(非把手)模板引擎,和/或可以将服务器上的把手与非把手模板在客户端上一起使用-
只要选择的模板引擎的两种语法不碰撞。由于我在客户端上使用emberjs,并且它使用了handlebars语法(默认情况下),因此我更喜欢在客户端上使用emberjs
+ handlebars语法。因此expressjs + jade成为服务器的自然选择。

2020-07-07