res.send() 和 res.end() 的区别
在使用 Node.js 的服务端中一般会使用 Express 框架,后端服务器都会对客户端发送的请求做处理并响应,常常会有两种响应方式:res.send() 和 res.end()。
两者的主要区别:
响应方式不同
- 如果服务器端没有数据要返回到客户端的话,就直接用res.end()。即向请求客户端发送 HTTP 响应消息。
- 如果服务器需要有数据返回到客户端的话,就需要用res.send()。
响应的类型不同
- res.end() 只能发送 string 或者 Buffer 类型
- res.send() 可以发送任何类型的数据
附加
Buffer 类型
- JavaScript 语言没有读取或操作二进制数据流的机制
- Node.js 中引入了 Buffer 类型是我们可以操作 TCP流 或 文件流
- Buffer 类型的对象类似于整数数组,但 Buffer 的大小是固定的、且在 V8 对外分配物理内存。Buffer 的大小在被创建时确定,且无法调整。(buf.length 是固定的,不允许修改)
- Buffer 是全局的,所以使用的时候无需 require() 的方式来加载