Отправить HTML-страницу клиенту - PullRequest
0 голосов
/ 04 апреля 2019

Я формирую разметку html-страницы и пишу в переменную htmlToSend

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Hyperspotters</title>
</head>
    <body style="margin: 0;
    font-family: Arial, Helvetica, sans-serif;">
            <header>
                <div style="background: #3366CD; padding: 10px">
                ....

Мне нужно вернуть его клиенту.

Я так и повысился

            let htmlToSend = func.statusСheck(success, replacements);
            return res.sendFile(htmlToSend);

и

            let htmlToSend = func.statusСheck(success, replacements);
            return res.render(htmlToSend);

Как вернуть мою разметку клиенту?

Ответы [ 3 ]

1 голос
/ 04 апреля 2019

Обычно функции промежуточного программного обеспечения Express.js предоставляют объекты req и res, причем res является объектом ответа, который используется для отправки ответов клиенту.

Пример:

app.use(function (req, res, next) {

});

Как уже сказано @jacob, используйте функцию send объекта ответа, чтобы отправить ответ клиенту. Однако вы должны отправлять данные в виде строки (не буфера), потому что использование буфера приводит к тому, что данные интерпретируются как двоичные данные, но вы явно отправляете текст. Кроме того, использование буфера делает экспресс-набор Content-Type 'application / octet-stream', что также не то, что вы хотите. Вместо этого установите для него значение «text / html».

app.use("/", function (req, res, next) {
   res.set('Content-Type', 'text/html');
   res.send(htmlToSend);
});

См .: http://expressjs.com/en/guide/routing.html
А также: https://expressjs.com/en/4x/api.html#res.send

1 голос
/ 04 апреля 2019

Вы можете достичь этого одним из следующих способов:

// serve your files as static
// 'public' -- your static files folder, set path accordingly
app.use('/static', express.static(__dirname + 'public'))

Если у вас index.html в папке public, вы можете получить доступ к файлу, например yourhost:port/static/index.html

Или используйте шаблонизатор через view engine (например, ejs, 'pug', nunjucks и т. Д.), Например:

// assuming you use ejs
const ejs = require('ejs'); // install ejs package
// your views folder (say folder named "views")
app.set('views', __dirname + 'views')
app.set('view engine', 'ejs')

// Assuming you've index.ejs in your views folder
// in your router
...
res.render('index');

Подробнее о templating engines и подача статических здесь

1 голос
/ 04 апреля 2019

Непонятно, чего именно вы пытаетесь достичь.

Если вы хотите визуализировать HTML, попробуйте этот код.

res.render('index', function(err, html) {
  res.send(html);
});

, где index - это представление

Если вы хотите ответить содержимым HTML, попробуйте этот код.

res.set('Content-Type', 'text/html');
res.send(new Buffer(htmlToSend));

не забудьте установить Content-Type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...