2016-10-23 40 views
0

我已經閱讀了幾個答案,但尚不清楚如何使Express與多個視圖文件夾一起工作。使用Node.js/Express的多個視圖文件夾

比方說,快遞應用程序包含獨立的部分,在子文件夾進行組織:

app 
    +partA 
    +views 
     index.html 
    +partB 
    +views 
     index.html 

然後我們設置每個文件夾視圖:

app.set('views', [__dirname + '/partA/views', __dirname + '/partB/views']); 

但如何在第二個文件夾訪問index.html

在routes.js:

res.sendFile('index.html'); 

將始終發送部分A.

同時,我們也不能使用相對路徑:

res.sendFile('/partB/views/index.html'); 

將觸發錯誤:

Error : Failed to lookup view "/partB/views/index.html" in views directories "/partA/views" or "/partB/views"

那麼如何使這項工作?我知道通常的做法是將部件作爲視圖文件夾的子文件夾,但這不是一個選項。我不想爲每個部分重複的文件夾中/views/public/lib

回答

0

你想要什麼的時候調用res.sendFile('index.html') - A部分B部分還是? Express如何做出選擇?

嘗試

2.在中間件app.set('views', '/partB')在B部分要求
3. app.set('views', '/')並指定完整路徑每次res.sendFile('/partB/views/index.html');

+0

設置意見爲每個請求似乎是一個矯枉過正...如果我將視圖設置爲'/'並不意味着一些安全問題?就像能夠訪問服務器文件一樣 – mens

+0

通常的方式是在'views'(或'templates')文件夾中存儲模板。應用程序不通過'sendFile'直接發送模板,而是使用'res.render(template-name)'。因此,遠程用戶無法訪問模板。 –

相關問題