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 –