我正在使用express.static
提供一些静态文件。我想在返回客户端之前修改一些文件内容。以下是/public
路径下静态资源的源代码。
app.use('/public', express.static(path.join(__dirname, 'public')))
公共目录下有一些html
文件,我想在响应客户端之前修改html文件。
如何使用static
来做到这一点?我知道我可以添加定制的中间件,但不确定如何添加。我可以使用一种中间件模式吗?
答案 0 :(得分:1)
对于要修改的文件,请不要使用express.static()
,这不是这样做的。
相反,您为要进行修改的特定URL创建路由,然后从磁盘读取文件,进行修改并将其发送回客户端。 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')));