如何使Jade(Node.js)不关闭标记

时间:2013-09-26 10:46:38

标签: node.js pug template-engine

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

  1. 我有几个视图,如header,viewA,viewB,viewC等。
  2. 对于每个请求,我需要呈现标题局部视图并将其作为块发送,以便客户端浏览器开始呈现它。呈现标题视图时,我不希望关闭内部的<body>标记,因为要在<body>标记内添加更多数据。
  3. 与此同时,我需要做一些计算,然后再渲染另一个视图:A,B或C.
  4. 发送A,B或C视图后,我会关闭响应,这意味着关闭</body></html>标记。
  5. 听起来很简单。但问题是,在渲染标题视图时,Jade会关闭<html><body>标记。

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

    我目前看到的唯一解决方案是手动将标题部分向下发送到打开<body>标记,然后通过res.partial()将其余部分渲染为Jade partials。

    任何提示都受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

您可以使用!=

输出任何文本(包括原始html)
!= "<body>"
  some
     more
        tree(attr=1)

结果输出:

<body>
<some>
  <more>
    <tree attr="1"></tree>
  </more>
</some>

答案 1 :(得分: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><body>标记,而是将它们放在同一列上。这样Jade就不会关闭它们。