2014-02-23 67 views
0

目前,這是我如何我的觀點建立在我的server.js當根頁面被訪問:有沒有辦法在ExpressJS中只渲染一次視圖?

app.get('/', function(req, res){ 
    res.render('home.jade'); 
}); 

而且在home.jade,

include head 
include top 
include left 
body 
    div.container 
     p Welcome to the homepage. 

這工作得很好,但問題是,當訪問不同的頁面時,我將不得不每次包括head.jade,top.jade和left.jade。有沒有辦法簡單地只包含一次,並且每次訪問其他頁面時都只更改正文部分?我看了一下partials,但看起來這個選項在Express 3.0+中被刪除了。

回答

0

可以渲染的頭部,頂部和左:當你指定回調

res.render('static.jade', {}, function(err, html){ 
    // ... 
}); 

,則沒有發送響應,其結果是在html變種。然後,你可以用「home.jade」一樣,將兩者連接起來的結果字符串,並用

res.send(concatencated_html); 

請記住,使頭部會產生一個完整的HTML輸出(<html>...</html>)做出反應,你需要在將其餘部分附加到它之前進行修剪(與第二次渲染的開始時相同)。

對我來說,保持包含在查看文件中簡單得多。

+0

我不認爲我正確解釋了這個問題。這基本上給出了和我現在一樣的結果,但它不能解決問題。當訪問不同的頁面時,頭部,頂部和左側仍然需要再次渲染。我試圖找到一種方法來渲染它們只有一次 - 當用戶點擊網站上的不同鏈接時,只更改內容/主體部分,而其他部分(頭部,頂部和左側)加載。 – rkenmi

+0

您可以始終在應用程序啓動時將頭部,頂部和左側渲染爲某個變量,然後將其添加到其他動態渲染。這樣你只能處理這些零件一次。這是你想要的? – wesolyromek

+0

如果舉一個例子,我將一個動畫圖像(無限循環)放在任何頂部/頭部/左側,當我訪問另一個頁面時,圖像將被重新加載回其默認位置。 – rkenmi

相關問題