购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 了解Buffer

由于历史原因,早期的JavaScript语言没有用于读取或操作二进制数据流的机制。因为JavaScript最初被设计用于处理HTML文档,而文档主要由字符串组成。

但随着Web的发展,Node.js需要处理如数据库通信、操作图像或视频,以及上传文件等复杂的业务。在早期,Node.js通过将每个字节编码为本文字符来处理二进制数据,这种方式既浪费资源又速度缓慢,不仅不可靠,还难以控制。

因此,Node.js引入Buffer类,用于在TCP流、文件系统操作和其他上下文中与八位字节流(octet streams)进行交互。

之后,随着ECMAScript 2015的发布,对于JavaScript二进制处理有了质的改善。ECMAScript 2015定义了一个TypedArray(类型化数组),期望提供一种更加高效的机制来访问和处理二进制数据。基于TypedArray, Buffer类将以更优化和适合Node.js的方式来实现Uint8Array API。

4.1.1 了解TypedArray

TypedArray对象描述了基础二进制数据缓冲区的类数组视图。没有名为TypedArray的全局属性,也没有直接可见的TypedArray构造函数。相反,有许多不同的全局属性,其值是特定元素类型的类型化数组构造函数,如下所示。

表4-1总结了所有TypedArray的类型及值范围。

表4-1 TypedArray的类型及值范围

更多有关TypedArray的内容,可以参阅文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray。

4.1.2 Buffer类

Buffer类是基于Uint8Array的,因此其值为0~255的整数数组。

以下是创建Buffer实例的一些示例。

Buffer可以简单理解为是数组结构,因此,可以用常见的“for..of”语法来迭代缓冲区实例。以下是示例。 3mV9V65sMexr5irmgFw9t795sbWvSHNzJQ7CkdSUDTTCMVOA3Z+GsxhxICHZuwxu

点击中间区域
呼出菜单
上一章
目录
下一章
×