我在Node服务器上使用express.js,目前一些GET请求是针对静态文件,如ZZZ.html或YY.css ...我想识别哪个url是静态文件,哪个是wich是一条路线。
我如何在中间件中执行此操作?
(不确定它是否清楚:/)
答案 0 :(得分:3)
您可以使用fs
模块来确定是否存在请求的文件。
在最简单的情况下,您的代码可能如下所示:
app.use(function(req, res, next) {
require('fs').stat(__dirname + req.url, function(err, stats) {
var isFile = stats && stats.isFile();
//do something with isFile variable
next();
});
});
把它放在任何其他路线之前。
编辑: 这样做,您可以假设所有静态文件都位于项目的根目录中。如果您的静态文件位于另一个目录(例如/ public),则应编写__dirname + '/public' + req.url
,并检查req.url
是否以/public
开头。
答案 1 :(得分:1)
将您的静态文件放在public
目录中并拥有
app.use(express.static(__dirname + '/public'));
在您的路线之后,它将捕获其他请求。