我形成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);
如何将标记返还给客户?
答案 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
的中间件功能公开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
答案 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