0

我正在尝试将多个数据块发送到客户端,每个客户端都由 Express Node.js 框架中的 Jade 模板引擎呈现。

  1. 我有几个视图,如 header、viewA、viewB、viewC 等。
  2. 对于每个请求,我都需要渲染标题部分视图并将其作为一个块发送,以便客户端浏览器开始渲染它。当呈现标题视图时,我不希望<body>关闭里面的标签,因为更多的数据应该在<body>标签内。
  3. 与此同时,我需要进行一些计算,然后渲染另一个视图:A、B 或 C。
  4. 一旦发送了 A、B 或 C 视图,我将关闭响应,这意味着关闭</body></html>标签。

听起来很简单。但问题是 Jade在渲染标题视图时关闭了<html>and标签。<body>

我知道如何使用本机 Node.js 响应对象手动执行此操作,但是,无法弄清楚如何以正确的方式使用 Jade 执行此操作。

我目前看到的唯一解决方案是手动将标题部分发送到打开<body>标签,然后通过res.partial().

任何提示都非常感谢。

4

2 回答 2

3

您可以使用以下命令输出任何文本(包括原始 html)!=

!= "<body>"
  some
     more
        tree(attr=1)

结果在此输出中:

<body>
<some>
  <more>
    <tree attr="1"></tree>
  </more>
</some>
于 2013-09-26T15:27:31.697 回答
0

即使我可以接受上述似乎有效但没有奏效的答案。尽管如此,以下代码确实有效。

!!! 5
<html>
head
    meta(http-equiv="Content-Type",content="text/html;charset=utf-8")
    meta(http-equiv="Cache-Control", content="no-cache")
    meta(http-equiv="Expires", content="0")
    title= title
    link(rel="shortcut icon",href='/img/nelo2_logo.ico')
    link(rel='stylesheet',href='/css/bootstrap.css')
    link(rel='stylesheet',href='/css/jquery-ui.css')
    link(rel='stylesheet',href='/css/chosen.css')
    link(rel='stylesheet',href='/css/common.css')
    link(rel='stylesheet',href='/css/style.css')
    script(src='/js/core/require.js')
<body>

所以解决方案不是缩进<html>and<body>标记,而是将它们放在同一列上。这样 Jade 就不会关闭它们。

于 2013-09-27T01:26:55.020 回答