使用Express JS级联式渲染
通过运行在节点服务器上的快速应用程序,我将如何从完整pathrecursionsearch渲染文件,直到所提供的URL的开头。
例如,如果有人用www.somewebsite.com/shop/products/product打我的服务器,渲染引擎会首先检查shop / products / product /中是否有index.jade文件。 如果没有find,它会检查商店/产品/,然后购物/。
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 }) });
问题是响应对象没有传递给渲染callback,所以我无法回想回应的渲染。 我正在寻找创build一个循环,因为URLpath可能是任何数量的目录深,所以我不能只是假设我只需要级联一个明确的次数。
任何人都看到了这个方法?
您应该能够使用闭包中的响应对象。 我认为(假设明确允许你第二次调用res.render),你可以使用这样的代码来实现你想要的:
var express = require('express'); var app = express(); app.get('/*', tryRender); function tryRender(req, res){ res.render(req.path + '/index.jade', function(err, html){ if (err) { req.path = 'mynewpath'; tryRender(req, res); } }) }
注意:您将需要添加一个基本案例,否则如果该函数找不到可用的视图,则该函数将无限recursion:D
如果express不允许随后调用res.render
,那么您可能需要res.render
确定文件系统上是否存在该文件。
- 如何迭代创buildlogging集合并一次渲染?
- Sequelize updateAttributes在socket.on('disconnet')中不起作用
- Node / Express是否重新定义request.ip?
- 为什么调用node.js body-parser失败,尽pipe我已经安装了它?
- 在页面请求上维护NodeJS上的后端连接?
- 使用NodeJS Express和node-sass让SASS自动debugging
- NodeJS:使用connect-flash的Express 3.0(根据护照本地策略中的build议),仍然发现req.flash的exception
- 如何在所有文件上启用express.js 4.x上的CORS?
- 节点JS获得完全加载的HTML页面