Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在express中res.send和res.write有什么区别?_Node.js_Express_Npm - Fatal编程技术网

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

  • res.send
    仅在Express.js中
  • 为简单的非流式响应执行许多有用的任务
  • 能够自动分配
    内容长度
    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
只能调用一次,其中as
res.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.js
response
class继承
OutgoingMessage
class。下面是
write
方法的定义:
OutgoingMessage.prototype.write=函数write(chunk,encoding,callback){return write(this,chunk,encoding,callback,false);}
另一个区别是,
发送
自动将编码设置为UTF-8。我们可以获得一些关于此的参考链接吗?Express文档包括所有内容: