Javascript 如何使用Node.js和Express发送分块的HTML?

Javascript 如何使用Node.js和Express发送分块的HTML?,javascript,node.js,express,Javascript,Node.js,Express,在处理页面的其余部分之前,我想发送包含样式表的。在PHP中,我可以使用ob\u 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() .the

在处理页面的其余部分之前,我想发送包含样式表的
。在PHP中,我可以使用
ob\u 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
    });
});
app.set('view engine','ejs');
app.get('*',函数(req,res){
res.writeHead(200,{'Content-Type':'text/html'});

res.write(“这里有一个简单的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);
});
var express=require('express');
var-app=express();
var server=app.listen(3000);
应用程序集(“视图”、“视图”);
应用程序集(“查看引擎”、“ejs”);
app.get('/',函数(req,res,next){
res.write(“”);
setTimeout(函数(){
res.render('index',{…},函数(err,html){
//TODO:处理错误
res.end(html);
});
}, 1000);
});

请注意,它使用了
res.render()
的“回调变量”,该变量可用于只渲染模板而不返回响应(如果不这样做,
res.render()
将生成错误)。或者,您也可以使用执行相同操作的变量。

您应该将
res.render()放入
在db函数的回调函数中。因为它在那里,你的渲染将没有任何东西要渲染。你能添加db调用的外壳吗?@remus:为了简单起见,我想我可以更改它。啊,好的。这会带来很大的不同。所以那仍然不起作用?另一种方法是发送一个包含所有des的页面ired头信息作为持有者,然后onDOMReady在其中触发ajax调用以获取DB内容above@CarlK很多东西已经用Ajax加载了。主要的问题不是DB的东西,而是样式表。浏览器在开始下载样式表之前会等待所有HTML被下载。我希望它开始下载样式表lesheets尽快。