我是 express.js的初学者,我正在试图理解 res.send和 res.write之间的区别?
express.js
res.send
res.write
Content-Length
res.end()
app.get('/user/:id', function (req, res) { res.send('OK'); });
更多细节:
response.write('<html>'); response.write('<body>'); response.write('<h1>Hello, World!</h1>'); response.write('</body>'); response.write('</html>'); response.end();
res.send等于 res.write + res.end 所以关键的区别是 res.send只能调用一次,因为 res.write可以被调用多次,然后是 res.end。
res.write + res.end
res.end
但是除此之外,res.send是 Express 的一部分,它可以自动检测响应头的长度。 但是使用 res.send ()可能会出现内存峰值,在大文件的情况下,我们的应用程序会挂起在两者之间。
在任何一个答案中都没有指出的最重要的区别之一是“消耗”。
res.write可以返回 true 或 false:
如果整个数据成功刷新到内核,则返回 true 如果全部或部分数据已在用户中排队,则返回 false 当缓冲区再次空闲时,将发出“消耗”。
因此,在执行 res.write时,调用方应该延迟写入,直到如果 res.write返回 false,则排出事件发生。
所有这些都在 res.send中自动处理。折衷的方法是在使用后者时必须进行的缓冲。
假设您有两行需要显示,并使用 res.send 作为
res.send("shows only First Line") res.send("won't show second Line")
然后只显示第一行,而使用 res.write可以灵活地编写多行,例如
res.write("Shows first line") res.write("Shows second line") res.send()
res.send()等于 res.write()+ res.end()。 基本上,res.send是快递和 res.write+res.end()是裸金属节点发送数据的方式。
res.send()
res.write()+ res.end()
res.write+res.end()
我也是这方面的初学者。但是我观察到的是,如果只编写 res.write(),页面将持续加载,直到编写 res.end()。然而,如果你写 res.send(),就不需要 res.end()。res.send()基本上同时做 res.write()和 res.end()。
res.write()