我用来express.static
提供一些静态文件。我想在返回给客户端之前修改一些文件内容。下面是path下静态资源的源码/public
。
app.use('/public', express.static(path.join(__dirname, 'public')))
Run Code Online (Sandbox Code Playgroud)
public目录下有一些html
文件,我想在响应客户端之前修改html文件。
我怎样才能做到这一点static
?我知道我可以添加自定义中间件,但不知道如何添加。有我可以使用的中间件模式吗?
您不用于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')));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4349 次 |
最近记录: |