Как изменить статическое содержимое файла с помощью express.static? - PullRequest
0 голосов
/ 01 июля 2018

Я использую express.static для обслуживания некоторых статических файлов. Я хочу изменить содержимое некоторых файлов, прежде чем вернуться к клиенту. Ниже приведен исходный код для статических ресурсов в пути /public.

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

В общедоступном каталоге находится несколько файлов html, и я хочу изменить html-файлы, прежде чем отвечать клиенту.

Как я могу сделать это с static? Я знаю, что могу добавить специализированное промежуточное ПО, но не знаю, как. Можно ли использовать шаблон промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 01 июля 2018

Вы не используете 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')));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...