我要发送 <head>
在处理页面的其余部分之前包含样式表。在 PHP 中,我可以使用 ob_flush()
.
我试过这样做:
app.set('view engine','ejs');
app.get('*',function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<!doctype...<link rel=stylesheet...');
doDBStuff()
.then(function(data){
res.render('index',{...}); // uses EJS for templating
});
});
然而,res.render()
部分未发送。是否有发送分块数据的内置方式?
一种方法是手动加载 EJS 文件并手动处理它们。我还必须手动发送适当的 header 。如果存在,我更喜欢内置方法。
最佳答案
这是一个简单的 PoC,可以满足您的需求:
var express = require('express');
var app = express();
var server = app.listen(3000);
app.set('views', 'views');
app.set('view engine', 'ejs');
app.get('/', function (req, res, next) {
res.write('<!-- prefix -->');
setTimeout(function() {
res.render('index', { ... }, function(err, html) {
// TODO: handle errors
res.end(html);
});
}, 1000);
});
请注意,它使用了 res.render()
的“回调变体”,它可用于仅呈现模板而不发送回响应(如果您不这样做的话) , res.render()
会产生一个错误)。或者,您可以使用 app.render()
这也是一样的。
关于javascript - 如何使用 Node.js 和 Express 分块发送 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577388/