2
使用在節點服務器上運行的快速應用程序,我將如何從完整路徑遞歸搜索渲染文件,直至所提供的URL的開頭。使用Express JS級聯渲染使用Express JS
例如,如果有人用www.somewebsite.com/shop/products/product打我的服務器,渲染引擎會首先檢查shop/products/product /中是否有index.jade文件。如果沒有找到,它會檢查商店/產品/,然後購物/。
var express = require('express');
var app = express();
app.get('/*', function(req, res){
res.render(req.path + '/index.jade', function(err, html){
// some loopback code which alters the path and recalls the render method
})
});
問題是響應對象沒有傳遞給渲染回調,所以我無法回想起迴應的渲染。我期待創建一個循環,因爲URL路徑可以是任意數量的目錄,所以我不能假設我只需要級聯一個確定的次數。
任何人都看到了這個方法?
使用閉包將不起作用,因爲回調將需要調用可變次數,具體取決於url的有多少部分。你的例子使用了我想避免的重定向。 – shennan
只要express允許後續的'res.render'調用,該代碼就可以工作。這個例子很快就能找到。只需將'res.redirect'替換爲'res.render'。無論如何,我添加了一個我的意思的代碼示例。如果express不允許您多次調用渲染,那麼您可能必須對文件系統執行一些操作以檢查視圖是否存在。 –
如果我理解你的意思,我認爲我的遞歸函數應該處理閉包不工作的問題。請記住,您將需要一個基本案例或無限循環:D –