如果我有一个包含两个文件的目录,我想发送它们两个。假设和index.html和style.css。
Router.get('/', function(req, res) {
var indexStream = fs.createWriteStream('path to index')
var cssStream = fs.createWriteStream('path to style')
indexStream.pipe(res)
styleStream.pipe(res)
})
据我所知,.pipe(res)
隐式调用res.end(),因此我可以发送到单独的读取流。谢谢你的帮助〜
答案 0 :(得分:1)
你不能这样做。
这不是Node.js的限制。它是您的Web浏览器的限制(或者更确切地说,是HTTP的限制)。你做的是分别发送每个文件:
Router.get('/', function(req, res) {
res.sendFile('path to index')
})
Router.get('/style.css', function(req, res) {
res.sendFile('path to style')
})
或者,如果您的路由器支持它,您可以使用静态中间件来提供css文件。
是的,没有。
如果您的浏览器支持,节点http.Server支持keep-alive
。这意味着如果可能的话,它将重新使用已经打开的连接。因此,如果您担心延迟并希望实施持久连接,那么它已经为您服务了。
如果需要,可以通过设置keep-alive
来更改server.timeout
超时,但我认为默认值2分钟对于大多数网页来说已经足够了。
答案 1 :(得分:0)
通常,您可以从路由处理程序提供html,并让express.static()
中间件自动处理所有静态资源。
您还可以使用res.sendFile()
进一步简化操作。
所以你可能有类似的东西:
// Use whatever the correct path is that should be the root directory
// for serving your js, css, and other static assets.
app.use(express.static(path.join(__dirname, 'public')));
// ...
Router.get('/', function(req, res) {
res.sendFile('path to index');
});