我是express.js的初学者,我试图了解res.send和res.write之间的区别?
express.js
res.send
res.write
vmdwslir1#
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();
ssm49v7z2#
res.send等价于res.write + res.end,所以关键的区别是res.send只能被调用一次,而res.write可以被调用多次,后面是res.end。但除此之外,res.send是Express的一部分。它可以自动检测响应头的长度。但res.send()可能有内存峰值的机会,在大文件的情况下,我们的应用程序挂起。
res.write + res.end
res.end
l3zydbqr3#
最重要的区别之一没有在任何答案中指出是“排水”。
res.write可以返回true或false。根据文档:如果整个数据已成功刷新到内核缓冲区,则返回true。如果所有或部分数据已在用户内存中排队,则返回false。当缓冲区再次空闲时,将发出'drain'。因此,在执行res.write时,如果res.write返回false,则调用者应该推迟写入,直到drain事件发出。所有这些都是在res.send中自动处理的,代价是使用后者时必须做的缓冲。
gcuhipw94#
我也是一个初学者。但我观察到的是,如果你只写res.write(),页面将持续加载,直到你写res.end()。而如果你写res.send(),就不需要res.end()。res.send()基本上它同时做res.write()和res.end()。
res.write()
res.send()
ktca8awb5#
假设您有两行需要显示,您使用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()
型
wydwbb8l6#
res.send()相当于res.write()+ res.end()。基本上,res.send用于express,res.write+res.end()用于bare metal node方式发送数据。
res.write()+ res.end()
res.write+res.end()
6条答案
按热度按时间vmdwslir1#
res.send
res.send
仅在js.js中。Content-Length
HTTP响应头字段。res.send
只能被调用一次,因为它等价于res.write
+res.end()
更多详情:
res.write
更多详情:
ssm49v7z2#
res.send
等价于res.write + res.end
,所以关键的区别是res.send
只能被调用一次,而res.write
可以被调用多次,后面是res.end
。但除此之外,
res.send
是Express的一部分。它可以自动检测响应头的长度。但res.send()可能有内存峰值的机会,在大文件的情况下,我们的应用程序挂起。l3zydbqr3#
最重要的区别之一没有在任何答案中指出是“排水”。
res.write
可以返回true或false。根据文档:如果整个数据已成功刷新到内核缓冲区,则返回true。如果所有或部分数据已在用户内存中排队,则返回false。当缓冲区再次空闲时,将发出'drain'。
因此,在执行
res.write
时,如果res.write
返回false,则调用者应该推迟写入,直到drain事件发出。所有这些都是在
res.send
中自动处理的,代价是使用后者时必须做的缓冲。gcuhipw94#
我也是一个初学者。但我观察到的是,如果你只写
res.write()
,页面将持续加载,直到你写res.end()
。而如果你写res.send()
,就不需要res.end()
。res.send()
基本上它同时做res.write()
和res.end()
。ktca8awb5#
假设您有两行需要显示,您使用res.send作为
字符串
然后只显示第一行,而使用
res.write
可以灵活地写入多行,例如型
wydwbb8l6#
res.send()
相当于res.write()+ res.end()
。基本上,res.send
用于express,res.write+res.end()
用于bare metal node方式发送数据。