我正在使用
express.static
来提供一些静态文件。我想在返回给客户端之前修改一些文件内容。下面是/public
路径下静态资源的源代码。
app.use('/public', express.static(path.join(__dirname, 'public')))
public目录下有一些
html
文件,我想在回复客户端之前修改html文件。
如何使用
static
做到这一点?我知道我可以添加自定义中间件,但不知道如何添加。有我可以使用的中间件模式吗?
您不要将
express.static()
用于要修改的文件 - 这不是它的作用。
在提供 HTML 文件之前修改 HTML 文件的通常方法是使用模板系统。 Express 生态系统有数十种模板系统(例如 EJS、Jade、Handlebars 等...)专门为解决这个问题而设计。您可以使用模板的语言来指定要在模板中插入内容的位置。
如果你真的想编写自己的系统来在发送之前修改内容,你可以自己加载文件,进行任何你想要的修改,然后发送。
app.get("/public/somefile", function(req, res) {
fs.readFile(path.join(__dirname, 'public', 'somefile'), function(err, data) {
if (err) {
res.sendStatus(404);
} else {
// modify the data here, then send it
res.send(data);
}
});
});
// put express.static after your other routes that serve from the public
// directory so those other routes are matched first
app.use('/public', express.static(path.join(__dirname, 'public')));