2013-09-26 29 views
0

我試圖發送多個數據塊到客戶端,每個客戶端都由快速Node.js框架中的Jade模板引擎呈現。如何使翡翠(Node.js)不關閉<body>標記

  1. 我有這樣幾個頭的看法,viewA,viewB,viewC等
  2. 對於每一個我需要呈現頭部局部視圖,並把它作爲一大塊,使客戶端瀏覽器開始呈現它的請求。在呈現標題視圖時,我不希望<body>標籤內部被關閉,因爲更多的數據應該在<body>標籤內。
  3. 與此同時,我需要做一些計算,然後渲染另一個視圖:A,B或C.
  4. 一旦發送了A,B或C視圖,我將關閉響應,這意味着關閉</body></html>標籤。

聽起來很簡單。但問題在於,Jade在呈現標題視圖時關閉了<html><body>標記。

我知道如何手動使用本機Node.js響應對象,但是,無法弄清楚如何用Jade以正確的方式做到這一點。

我目前看到的唯一解決方案是手動發送標題部分以打開<body>標記,然後通過res.partial()將其餘部分渲染爲Jade部分。

任何提示高度讚賞。

回答

3

您可以輸出任何文本(包括原始的HTML)與!=

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

導致這種輸出:

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

這個應該在哪個版本的Jade中工作?我有0.26.3,上面的語法不起作用:編譯錯誤。 – Eye

+0

你可以在http://jade-lang.com/ –

+0

在線試試,對,我就是這麼做的。請添加最低版本要求,我會接受您的答案。謝謝! – Eye

0

即使我可以接受上面的回答似乎已經奏效,但避風港「T。儘管如此,下面的代碼確實有效。

!!! 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不會關閉它們。