如何用express.static修改静态文件内容?

问题描述 投票:0回答:1

我正在使用

express.static
来提供一些静态文件。我想在返回给客户端之前修改一些文件内容。下面是
/public
路径下静态资源的源代码。

app.use('/public', express.static(path.join(__dirname, 'public')))

public目录下有一些

html
文件,我想在回复客户端之前修改html文件。

如何使用

static
做到这一点?我知道我可以添加自定义中间件,但不知道如何添加。有我可以使用的中间件模式吗?

node.js express
1个回答
5
投票

您不要将

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')));
© www.soinside.com 2019 - 2024. All rights reserved.