如果我正確理解你的問題,你想知道如何使用相同的整體模板渲染多個'節',是嗎?每個部分可能會有所不同,具體取決於頁面上的內容和主要URL。
我可以建議兩種方式: 1)恕我直言,正確的方法 - 定義一個基本模板(比如說,如果你使用的是jade/express的index.jade),並且你會創建一個主頁(/)和一個主頁博客頁面(/博客)使用:
# Home Page
app.get '/', (req, res) ->
# Do some simple DB transactions, etc, and get the main area content.
res.render 'index.jade', { json: json }
# Blog Page
app.get '/blog/:id', (req, res) ->
blog.grabPost req.params.id, (json) -> # Grab content of the blog post from the DB
res.render 'index.jade', { json: json }
接下來,創建幾個「部分」的URL爲內容的其餘部分:
# Sidebar Partial
app.get '/sidebar/:page/:id', (req, res) ->
sidebar.grabContent req.params.id, (json) ->
res.render '{#req.params.page}.jade', { json: json }
你會則呼籲頁面加載部分客戶端通過JQuery像這樣:
$ ->
$('.sidebar').load '/sidebar/blog/365' + id, (response, status, xhr) ->
2)使用Express'視圖partials',我不太熟悉。文檔可以在這裏找到:http://expressjs.com/guide.html#view-partials
從描述中:「Express視圖系統內置支持部分和集合,這是代表文檔片段的」小「視圖,例如,而不是在視圖中迭代顯示評論,我們可以使用部分收集:「
我不明白這個問題。通常情況下,如果需要動態生成它,通常會將邊欄放在HTML模板中 - 或者是一些模板引擎。 – Halcyon
「問題」是創建sidebares內容的功能(當然)是異步的,因爲我必須從數據庫中獲取數據。所以一個簡單的「視圖助手」不能做到這一點。 – masch
「當然」?我認爲你有太多隱含的假設。我不明白你所描述的情況。買一隻橡皮鴨。向你解釋你試圖做的事情,鴨子會明白。然後修改你的解決方案 - http://en.wikipedia.org/wiki/Rubber_duck_debugging – Halcyon