Node.js v16.18.1 文档


目录

v8 引擎#

中英对照

node:v8 模块暴露了特定于内置在 Node.js 二进制文件中的 V8 版本的 API。 可以使用以下方式访问它:


v8.cachedDataVersionTag()#

中英对照

    返回表示从 V8 版本、命令行标志、以及检测到的 CPU 特性派生的版本标签的整数。 这对于判断 vm.Script cachedData 缓冲区是否与此 V8 实例兼容很有用。

    
    

    v8.getHeapCodeStatistics()#

    中英对照

      返回具有以下属性的对象:

        
        

        v8.getHeapSnapshot()#

        中英对照

          生成当前 V8 堆的快照并返回可用于读取 JSON 序列化表示的可读流。 此 JSON 流格式旨在与 Chrome 开发者工具等工具一起使用。 JSON 模式未记录并且特定于 V8 引擎。 因此,模式可能会从 V8 的一个版本更改为下一个版本。

          
          

          v8.getHeapSpaceStatistics()#

          中英对照

            返回有关 V8 堆空间的统计信息,即构成 V8 堆的片段。 堆空间的排序和堆空间的可用性都无法保证,因为统计信息是通过 V8 GetHeapSpaceStatistics 函数提供的,并且可能会从一个 V8 版本更改为下一个版本。

              
              

              v8.getHeapStatistics()#

              中英对照

                返回具有以下属性的对象:

                  
                  

                  v8.setFlagsFromString(flags)#

                  中英对照

                    v8.setFlagsFromString() 方法可用于以编程方式设置 V8 命令行标志。 此方法需谨慎使用。 在虚拟机启动后更改设置可能会导致不可预测的行为,包括崩溃和数据丢失;或者它可能只是什么都不做。

                    
                    

                    v8.stopCoverage()#

                    中英对照

                    v8.stopCoverage() 方法允许用户停止 NODE_V8_COVERAGE 启动的覆盖收集,以便 V8 可以释放执行计数记录并优化代码。 如果用户想按需收集覆盖范围,可以与 v8.takeCoverage() 结合使用。

                    v8.takeCoverage()#

                    中英对照

                    v8.takeCoverage()方法允许用户按需将 NODE_V8_COVERAGE 开始的覆盖写入磁盘。 此方法可以在进程的生命周期内多次调用。 每次执行计数器将被重置,并且新的覆盖报告将写入 NODE_V8_COVERAGE 指定的目录。

                    v8.writeHeapSnapshot([filename])#

                    中英对照

                      生成当前 V8 堆的快照并将其写入 JSON 文件。 此文件旨在与 Chrome 开发者工具等工具一起使用 JSON 模式未记录并且特定于 V8 引擎,并且可能会从 V8 的一个版本更改为下一个版本。

                      
                      

                      v8.setHeapSnapshotNearHeapLimit(limit)#

                      中英对照

                        如果 --heapsnapshot-near-heap-limit 已经从命令行设置或 API 被多次调用,则 API 是无操作的。 limit 必须是正整数。 有关详细信息,请参阅 --heapsnapshot-near-heap-limit

                        序列化 API#

                        中英对照

                        序列化 API 提供了以与 HTML 结构化克隆算法兼容的方式序列化 JavaScript 值的方法。

                        v8.serialize(value)#

                        中英对照

                          使用 DefaultSerializervalue 序列化到缓冲区中。

                          v8.deserialize(buffer)#

                          中英对照

                            使用带有默认选项的 DefaultDeserializer 从缓冲区读取 JS 值。

                            v8.Serializer#

                            new Serializer()#

                            中英对照

                            创建新的 Serializer 对象。

                            serializer.writeHeader()#

                            中英对照

                            写出标头,其中包括序列化格式版本。

                            serializer.writeValue(value)#

                            中英对照

                              序列化 JavaScript 值并将序列化的表示添加到内部缓冲区。

                              serializer.releaseBuffer()#

                              中英对照

                                返回存储的内部缓冲区。 释放缓冲区后不应使用此序列化器。 如果先前的写入失败,则调用此方法会导致未定义的行为。

                                serializer.transferArrayBuffer(id, arrayBuffer)#

                                中英对照

                                  ArrayBuffer 标记为将其内容传输到带外。 将反序列化上下文中对应的 ArrayBuffer 传给 deserializer.transferArrayBuffer()

                                  serializer.writeUint32(value)#

                                  中英对照

                                    写入原始的 32 位无符号整数。 用于自定义的 serializer._writeHostObject() 内部。

                                    serializer.writeUint64(hi, lo)#

                                    中英对照

                                      写入原始的 64 位无符号整数,分成高和低 32 位部分。 用于自定义的 serializer._writeHostObject() 内部。

                                      serializer.writeDouble(value)#

                                      中英对照

                                        写入 JS number 值。 用于自定义的 serializer._writeHostObject() 内部。

                                        serializer.writeRawBytes(buffer)#

                                        中英对照

                                          将原始字节写入序列化器的内部缓冲区。 反序列化器需要一种方法来计算缓冲区的长度。 用于自定义的 serializer._writeHostObject() 内部。

                                          serializer._writeHostObject(object)#

                                          中英对照

                                            调用此方法来写入某种宿主对象,即由原生 C++ 绑定创建的对象。 如果无法序列化 object,则应抛出合适的异常。

                                            serializer._getDataCloneError(message)#

                                            中英对照

                                              调用此方法生成错误对象,当无法克隆对象时将抛出该错误对象。

                                              serializer._getSharedArrayBufferId(sharedArrayBuffer)#

                                              中英对照

                                                此方法在序列化器要序列化 SharedArrayBuffer 对象时被调用。 它必须为对象返回无符号的 32 位整数 ID,如果此 SharedArrayBuffer 已被序列化,则使用相同的 ID。 当反序列化时,此 ID 会传给 deserializer.transferArrayBuffer()

                                                serializer._setTreatArrayBufferViewsAsHostObjects(flag)#

                                                中英对照

                                                  指示是否将 TypedArrayDataView 对象视为宿主对象,即将它们传给 serializer._writeHostObject()

                                                  v8.Deserializer#

                                                  new Deserializer(buffer)#

                                                  中英对照

                                                    创建新的 Deserializer 对象。

                                                    deserializer.readHeader()#

                                                    中英对照

                                                    读取并验证标头(包括格式版本)。 例如,可以拒绝无效或不受支持的有线格式。 在这种情况下,会抛出 Error

                                                    deserializer.readValue()#

                                                    中英对照

                                                    从缓冲区反序列化 JavaScript 值并返回。

                                                    deserializer.transferArrayBuffer(id, arrayBuffer)#

                                                    中英对照

                                                      ArrayBuffer 标记为将其内容传输到带外。 将序列化上下文中对应的 ArrayBuffer 传给 serializer.transferArrayBuffer()(或者在 SharedArrayBuffer 的情况下从 serializer._getSharedArrayBufferId() 返回 id)。

                                                      deserializer.getWireFormatVersion()#

                                                      中英对照

                                                        读取底层有线格式版本。 可能主要用于读取旧的有线格式版本的遗留代码 不能在 .readHeader() 之前调用。

                                                        deserializer.readUint32()#

                                                        中英对照

                                                          读取原始的 32 位无符号整数并返回。 用于自定义的 deserializer._readHostObject() 内部。

                                                          deserializer.readUint64()#

                                                          中英对照

                                                            读取原始的 64 位无符号整数并将其作为具有两个 32 位无符号整数条目的数组 [hi, lo] 返回。 用于自定义的 deserializer._readHostObject() 内部。

                                                            deserializer.readDouble()#

                                                            中英对照

                                                              读取 JS number 值。 用于自定义的 deserializer._readHostObject() 内部。

                                                              deserializer.readRawBytes(length)#

                                                              中英对照

                                                                从反序列化器的内部缓冲区读取原始字节。 length 参数必须对应于传给 serializer.writeRawBytes() 的缓冲区的长度。 用于自定义的 deserializer._readHostObject() 内部。

                                                                deserializer._readHostObject()#

                                                                中英对照

                                                                调用此方法来读取某种宿主对象,即由原生 C++ 绑定创建的对象。 如果无法反序列化数据,则应抛出合适的异常。

                                                                v8.DefaultSerializer#

                                                                中英对照

                                                                Serializer 的子类,将 TypedArray(特别是 Buffer)和 DataView 对象序列化为宿主对象,并且只存储它们所指向的底层 ArrayBuffer

                                                                v8.DefaultDeserializer#

                                                                中英对照

                                                                DefaultSerializer 所写格式对应的 Deserializer 子类。

                                                                Promise 钩子#

                                                                中英对照

                                                                promiseHooks 接口可用于跟踪 promise 生命周期事件。 要跟踪所有的异步活动,则参阅 async_hooks,其在内部使用此模块生成 promise 生命周期事件以及其他异步资源的事件。 请求的上下文管理参阅 AsyncLocalStorage

                                                                
                                                                

                                                                promiseHooks.onInit(init)#

                                                                中英对照

                                                                  
                                                                  

                                                                  promiseHooks.onSettled(settled)#

                                                                  中英对照

                                                                    
                                                                    

                                                                    promiseHooks.onBefore(before)#

                                                                    中英对照

                                                                      
                                                                      

                                                                      promiseHooks.onAfter(after)#

                                                                      中英对照

                                                                        
                                                                        

                                                                        promiseHooks.createHook(callbacks)#

                                                                        中英对照

                                                                          注册要为每个 promise 的不同生命周期事件调用的函数。

                                                                          
                                                                          

                                                                          钩子回调#

                                                                          中英对照

                                                                          promise 生命周期中的关键事件分为四个方面:promise 的创建、调用继续句柄之前/之后或 await 前后,以及当 promise 解决或拒绝时。

                                                                          init(promise, parent)#

                                                                          中英对照

                                                                            当构造 promise 时调用。 这不意味着会发生相应的 before/after 事件,只是存在可能性。 如果在没有获得继续的情况下创建了 promise,则会发生这种情况。

                                                                            before(promise)#

                                                                            中英对照

                                                                              在 promise 继续执行之前调用。 这可以是 then()catch()finally() 句柄或 await 恢复的形式。

                                                                              after(promise)#

                                                                              中英对照

                                                                                在 promise 继续执行后立即调用。 这可能在 then()catch()finally() 句柄之后,或者在另一个 await 之后的 await 之前。

                                                                                settled(promise)#

                                                                                中英对照

                                                                                  当 promise 收到解决或拒绝值时调用。 这可能在 Promise.resolve()Promise.reject() 的情况下同步地发生。

                                                                                  启动快照 API#

                                                                                  中英对照

                                                                                  v8.startupSnapshot 接口可用于为自定义启动快照添加序列化和反序列化钩子。 目前启动快照只能从源代码构建到 Node.js 二进制文件中。

                                                                                  
                                                                                  

                                                                                  
                                                                                  

                                                                                  
                                                                                  

                                                                                  v8.startupSnapshot.addSerializeCallback(callback[, data])#

                                                                                  中英对照

                                                                                    添加一个回调,当 Node.js 实例即将序列化为快照并退出时将调用该回调。 这可以用来释放不应该或者不能序列化的资源或者将用户数据转换成更适合序列化的形式。

                                                                                    v8.startupSnapshot.addDeserializeCallback(callback[, data])#

                                                                                    中英对照

                                                                                      添加从快照反序列化 Node.js 实例时将调用的回调。 callbackdata(如果提供)将被序列化到快照中,它们可用于重新初始化应用程序的状态,或者在应用程序从快照重新启动时重新获取应用程序所需的资源。

                                                                                      v8.startupSnapshot.setDeserializeMainFunction(callback[, data])#

                                                                                      中英对照

                                                                                        这设置了从快照反序列化 Node.js 应用程序的入口点。 在快照构建脚本中只能调用一次。 如果被调用,反序列化应用程序不再需要额外的入口点脚本来启动,并且只需调用回调以及反序列化数据(如果提供),否则仍需要向反序列化应用程序提供入口点脚本。

                                                                                        v8.startupSnapshot.isBuildingSnapshot()#

                                                                                        中英对照

                                                                                          如果运行 Node.js 实例来构建快照,则返回 true。

                                                                                          返回顶部