Node.js 在express中res.send和res.write有什么区别?
我是Node.js 在express中res.send和res.write有什么区别?,node.js,express,npm,Node.js,Express,Npm,我是express.js的初学者,我试图理解res.send和res.write之间的区别 res.send res.send仅在Express.js中 为简单的非流式响应执行许多有用的任务 能够自动分配内容长度HTTP响应头字段 能够提供自动磁头和HTTP缓存刷新支持 实际解释 res.send只能调用一次,因为它相当于res.write+res.end() 例如: app.get('/user/:id',函数(req,res){ res.send('OK'); }); 有关详细
express.js
的初学者,我试图理解res.send
和res.write
之间的区别 res.send
仅在Express.js中res.send
- 为简单的非流式响应执行许多有用的任务
- 能够自动分配
HTTP响应头字段内容长度
- 能够提供自动磁头和HTTP缓存刷新支持
- 实际解释
只能调用一次,因为它相当于res.send
+res.write
res.end()
- 例如:
app.get('/user/:id',函数(req,res){ res.send('OK'); });
res.write
- 可以多次调用以提供身体的连续部分
- 例如:
response.write(“”); 回答。写(“”); 回答:写下“你好,世界!”; 回答。写(“”); 回答。写(“”); response.end();
res.send
相当于res.write+res.end
因此,关键的区别在于res.send
只能调用一次,其中asres.write
可以多次调用,后面是res.end
但除此之外,res.send
是Express的一部分。它可以自动检测响应头的长度。
但是res.send()可能会出现内存峰值,如果是大文件,我们的应用程序会挂起。在任何答案中都没有指出的最重要的区别之一是“耗尽”
res.write
可能返回true或false。截至文件日期:
如果整个数据已成功刷新到内核,则返回true
缓冲器如果全部或部分数据已在用户队列中排队,则返回false
记忆。”当缓冲区再次空闲时,将发出“drain”
因此,在执行res.write
时,如果res.write
返回false,则调用方应推迟写入,直到排放事件发出
所有这些都在
res.send
中自动处理。取舍是使用后者时必须进行的缓冲 假设有两行需要显示,并使用res.send as
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.write
一点,这是由节点http
模块中的OutgoingMessage
类提供的方法。Express.jsresponse
class继承OutgoingMessage
class。下面是write
方法的定义:OutgoingMessage.prototype.write=函数write(chunk,encoding,callback){return write(this,chunk,encoding,callback,false);}
另一个区别是,发送
自动将编码设置为UTF-8。我们可以获得一些关于此的参考链接吗?Express文档包括所有内容: