Node.js接口
buff缓冲区
> uffer对象用于表示固定长度的字节序列。 > Buffer 类是 JavaScript Uint8Array 类的子类,Node.js API 在支持 Buffer 的地方也接受纯 Uint8Array。 > 虽然 Buffer 类在全局作用域内可用,但仍然建议通过 import 或 require 语句显式地引用它。 #### 缓冲区和字符编码 > 在 `Buffer` 和字符串之间转换时,可以指定字符编码。 如果未指定字符编码,则默认使用 UTF-8。 > > 缓冲区接受它们接收到的编码字符串的所有大小写变体。 例如,UTF-8 可以指定为 `'utf8'`、`'UTF8'` 或 `'uTf8'`。 > > 现代 Web 浏览器遵循 [WHATWG 编码标准](https://encoding.spec.whatwg.org/),它将 `'latin1'` 和 `'ISO-8859-1'` 都名为 `'win-1252'`。 这意味着在执行 `http.get()` 之类的操作时,如果返回的字符集是 WHATWG 规范中列出的字符集之一,则服务器实际上可能返回 `'win-1252'` 编码的数据,使用 `'latin1'` 编码可能会错误地解码字符。 ```js import { Buffer } from 'node:buffer'; const buf = Buffer.from('hello world', 'utf8'); console.log(buf.toString('hex')); console.log(buf.toString('base64')); console.log(Buffer.from('fhqwhgads', 'utf8')); console.log(Buffer.from('fhqwhgads', 'utf16le')); ``` #### 缓冲区和 TypedArray > `Buffer` 实例也是 JavaScript `Uint8Array` 和 `TypedArray` 实例。 所有 `TypedArray` 方法都可用于 `Buffer`。 但是,`Buffer和 `TypedArray`之间存在细微的不兼容。 > > `Buffer.from()` 和 `TypedArray.from()` 具有不同的签名和实现。 具体来说,`TypedArray` 变体接受第二个参数,该参数是在类型化数组的每个元素上调用的映射函数,但是,`Buffer.from()` 方法不支持使用映射函数 ```js const buf = Buffer.from([1, 2, 3, 4]); //将 Buffer 传递给 TypedArray 构造函数将复制 Buffer 内容,解释为整数数组,而不是目标类型的字节序列 const uint32array = new Uint32Array(buf); console.log(uint32array);// Prints: Uint32Array(4) [ 1, 2, 3, 4 ] ``` #### 缓冲区和迭代 > 可以使用 `for..of` 语法迭代 `Buffer` 实例,此外,`buf.values()`、`buf.keys()` 和 `buf.entries()` 方法可用于创建迭代器。 ```js import { Buffer } from 'node:buffer'; const buf = Buffer.from([1, 2, 3]); for (const b of buf) { console.log(b); } ``` #### 类:Blob > Blob 封装了不可变的原始数据,可以在多个工作线程之间安全地共享。 - **new buffer.Blob([sources[, options]]):**创建新的 Blob 对象,其中包含给定源的串接。 - **blob.arrayBuffer():**返回使用包含 Blob 数据副本的 <ArrayBuffer> 履行的 promise。 - **blob.size:**Blob 的总大小(以字节为单位)。 - **blob.slice([start[, end[, type]]]):**创建并返回包含此 Blob 对象数据子集的新 Blob。 原来的 Blob 没有改动。 - **blob.stream():**返回允许读取 Blob 内容的新 ReadableStream。 - **blob.text():**返回使用解码为 UTF-8 字符串的 Blob 的内容履行的 promise。 - **blob.type:**Blob 的内容类型。 - **Blob 对象和 MessageChannel:**一旦创建了 <Blob> 对象,就可以通过 MessagePort 将其发送到多个目的地,而无需传输或立即复制数据。 只有在调用 arrayBuffer() 或 text() 方法时,才会复制 Blob 包含的数据。 #### 类:`Buffer` ##### 静态方法 - **Buffer.alloc(size[, fill[, encoding]]):**分配 `size` 个字节的新 `Buffer`。 如果 `fill` 为 `undefined`,则 `Buffer` 将被填零。 - **Buffer.allocUnsafe(size):**分配 `size` 个字节的新 `Buffer`。以这种方式创建的 `Buffer` 实例的底层内存没有被初始化。 - **Buffer.allocUnsafeSlow(size)**:分配 `size` 个字节的新 `Buffer`。以这种方式创建的 `Buffer` 实例的底层内存没有被初始化。 - **Buffer.byteLength(string[, encoding])**:使用 `encoding` 编码时返回字符串的字节长度。 - **Buffer.compare(buf1, buf2)**:比较 `buf1` 和 `buf2`,通常用于对 `Buffer` 实例的数组进行排序。 这相当于调用 `buf1.compare(buf2)` - **Buffer.concat(list[, totalLength])**:返回新的 `Buffer`,它是将 `list` 中的所有 `Buffer` 实例连接在一起的结果。 - **Buffer.copyBytesFrom(view[, offset[, length]])**:将 `view` 的底层内存复制到新的 `Buffer` 中 - **Buffer.from(array)**:使用 `0` 范围内的 `array` 字节分配一个新的 `Buffer` – `255`。 该范围之外的数组条目将被截断以符合它。 - **Buffer.from(arrayBuffer[, byteOffset[, length]])**:创建 `ArrayBuffer` 的视图,而无需复制底层内存。 - **Buffer.from(buffer)**:使用 `0` 范围内的 `array` 字节分配一个新的 `Buffer` – `255`。 该范围之外的数组条目将被截断以符合它。 - **Buffer.from(object[, offsetOrEncoding[, length]])** - **Buffer.from(string[, encoding])**:创建包含 `string` 的新 `Buffer`。 - **Buffer.isBuffer(obj)**:如果 `obj` 是 `Buffer`,则返回 `true`,否则返回 `false`。 - **Buffer.isEncoding(encoding)**:如果 `encoding` 是支持的字符编码的名称,则返回 `true`,否则返回 `false`。
顶部
收展
底部
[TOC]
目录
CommonJS 模块
package包模块
全局对象
http超文本传输协议
util实用工具
buff缓冲区
断言测试
EventEmitter事件
child_process子进程
相关推荐
Node.js教程:新手入门
Node.js:ExpressWeb
朴灵《深入浅出 Node.js》