javascript,如何知道url是否是静态文件

时间:2014-08-22 16:52:22

标签: node.js express middleware

我在Node服务器上使用express.js,目前一些GET请求是针对静态文件,如ZZZ.html或YY.css ...我想识别哪个url是静态文件,哪个是wich是一条路线。

我如何在中间件中执行此操作?

(不确定它是否清楚:/)

2 个答案:

答案 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'));

在您的路线之后,它将捕获其他请求。