本文介绍在Node.js Express框架中,如何正确配置静态文件服务与404通配符路由。关键在于将express.static置于app.router之前,并将捕获所有请求的app.get('*')放在最后,以确保静态资源不被404逻辑拦截,同时未匹配的路由能正确返回404页面。
Express路由与静态文件配置顺序
在使用 Express 框架时,路由配置往往是开发者容易困惑的环节。虽然可以通过 app.get('*') 来捕获所有页面请求,但如果配置不当,会导致静态文件被忽略。最近在开发一个小工具时,找到了一个有效的解决方案。
具体实现代码如下:
var express = require('express'),
router = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function () {
// ...
// 注意配置顺序,不要写反
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
// 其他 router ...
// 404 处理
app.get('*', function(req, res){
res.render('404.html', {
title: 'No Found'
})
});
将通配符路由放在最后处理。这样,所有未被其他路由匹配的页面请求,都会默认由 404.html 接管处理。