在Node.js中,我们可以使用内置的http
模块来创建一个简单的静态文件服务器。但是,为了更方便地管理路由和中间件,我们通常会使用像express
这样的框架。以下是使用express
创建一个静态文件服务器的示例代码:
const express = require('express');
const path = require('path');
const app = express();
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 监听端口
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
在这个例子中,我们使用express.static
中间件来提供public
目录下的静态文件。这意味着当你访问http://localhost:3000/some-file.jpg
时,如果some-file.jpg
存在于public
目录中,那么这个图片就会被提供给客户端。
如果你想要更复杂的功能,比如自定义错误页面或者自定义文件服务逻辑,你可以自定义中间件来实现。例如:
app.use(function(req, res, next) {
// 自定义逻辑来处理请求,如果文件不存在则返回自定义404页面
if (/* 文件不存在的条件 */) {
res.status(404);
res.sendFile(path.join(__dirname, 'public', '404.html'));
} else {
next();
}
});
app.use(express.static(path.join(__dirname, 'public')));
这个例子展示了如何在请求处理流程中插入一个自定义中间件,用于处理文件不存在的情况。如果文件不存在,它会提供一个自定义的404页面。如果文件存在,则使用express.static
中间件提供文件。