本篇文章带大家了解一下Node中的Buffer,并聊聊浏览器的事件循环,希望对大家有所帮助!
Buffer 的使用
数据的二进制
-
计算机中所有的内容:文字、数字、图片、音频、视频最终都会使用二进制来表示
-
JS
可以直接去处理非常直观的数据:比如字符串,我们通常展示给用户的也是这些内容 -
但你可能会以为JS也能够处理图片
- 事实上在网页端,图片一直是交给浏览器来处理的
JS
或者HTML
,只是负责告诉浏览器图片的地址- 浏览器负责发送请求获取这个图片,并且最终将这个图片给渲染出来
-
但是对于服务端来说是不一样的
- 服务端要处理的本地文件类型相对较多
- 比如某一个保存文本的文件并不是使用
utf-8
进行编码的,而是用GBK
,那么我们必须读取到他们的二进制数据,再通过GKB转换成对应的文字 - 比如我们需要读取的是一张图片数据(二进制),再通过某些手段对图片数据进行二次的处理(裁剪、格式转换、旋转、添加滤镜),Node中有一个名为
sharp
的库,就是负责读取图片或者传入图片的Buffer
对其再进行处理的 - 比如在
Node
中通过TCP
建立长连接,TCP传输的是字节流,我们需要将数据转成字节再进行传入,并且需要知道传输字节的大小(客户端需要根据大小来判断读取多少内容)
Buffer和二进制
-
我们会发现,对于前端开发来说,通常很少会和二进制打交道,但是对于服务器端来说,为了实现很多功能,我们必须直接去操作其二进制的数据
-
所以
Node
为了可以方便开发者完成