当前位置: 首页 > 面试题库 >

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

巫马昆琦
2023-03-14
问题内容

我在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)时,它将不起作用。没有错误,只是不使用数据替换标签。

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

谢谢!


问题答案:

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

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

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



 类似资料:
  • 我有一个来自http工具包的Websocket连接(Clojure,它工作得很好)。我从客户端发送ping以确保我们仍然保持连接,并且在那里一切正常。我的问题是,在这种情况下,人们是否会从服务器ping客户端? 我试图设置一些东西,如果我没有得到响应,就从服务器上删除频道,但是设置定时进程和改变状态来跟踪乒乓周期不是很方便,所以它变得有点难看。然后我就想,服务器能处理几十万个同时连接,我是不是就应

  • 你好,我写了一个非常简单的ZMQ服务器和客户端应用程序。它在我的本地机器上运行良好,如果我在AWS(同一个安全组)内运行这两个应用程序,它也运行良好。我已经尝试在AWS安全组中打开正确的端口(入站和出站)。我甚至向任何端口/地址上的所有流量开放了它们。但是我在客户端上收不到发布的消息。 我的客户端代码如下所示 我的服务器端代码如下所示 在客户端应用程序命令行中,我尝试传递正确格式为“TCP://p

  • 我有一个带sokjs套接字的节点应用程序。 一些HTML/JS客户端使用stomp over sock JS,但我不明白订阅是如何工作的: 客户端已连接,事件已记录,但范围为$scope。从不打电话通知。如何配置主题订阅? 编辑: 请注意,我一定清楚。 我使用sockjs模块作为websocket服务器。 没有太多的配置:

  • 是否可以使用ActiveMQ Artemis客户机库(1.5.x或2.x)连接到HornetQ服务器?

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock