发送HTML页面给客户端

时间:2019-04-04 09:34:06

标签: node.js express

我形成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 个答案:

答案 0 :(得分:1)

目前尚不清楚您到底想达到什么目的。

如果要呈现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

答案 1 :(得分:1)

通常,Express.js的中间件功能公开reqres对象,其中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

答案 2 :(得分:1)

您可以通过以下方式之一来实现:

// 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和投放静态here

的更多信息