Node.js v11.5.0 API参考文档

Node.js®是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。

  • 关于文档
  • 用法和示例

断言测试

稳定性:2 - 稳定

assert模块提供了一组简单的断言测试,可用于测试不变量。

存在strictlegacy模式,但建议仅使用strict模式。

有关使用的相等比较的更多信息,请参阅MDN关于相等比较和相同性的指南。

  • assert.AssertionError类
  • strict模式
  • legacy模式
  • assert(value[, message])
  • assert.deepEqual(actual, expected[, message])
  • assert.deepStrictEqual(actual, expected[, message])
  • assert.doesNotReject(asyncFn, error)
  • assert.doesNotThrow(fn, error)
  • assert.equal(actual, expected[, message])
  • assert.fail([message])
  • assert.fail(actual, expected[, message[, operator[, stackStartFn]]]) 弃用
  • assert.ifError(value)
  • assert.notDeepEqual(actual, expected[, message])
  • assert.notDeepStrictEqual(actual, expected[, message])
  • assert.notEqual(actual, expected[, message])
  • assert.notStrictEqual(actual, expected[, message])
  • assert.ok(value[, message])
  • assert.rejects(asyncFn, error)
  • assert.strictEqual(actual, expected[, message])
  • assert.throws(fn, error)

异步钩子

稳定性:1 - 实验

async_hooks模块提供了一个API来注册回调,跟踪Node.js应用程序内部创建的异步资源的生命周期,它可以使用以下方式访问:

const async_hooks = require('async_hooks');

异步资源表示具有关联回调的对象,可以多次调用此回调,例如,net.createServer()中的'connection'事件,或者只是fs.open()中的一次。在调用回调之前,也可以关闭资源,AsyncHook没有明确区分这些不同的情况,但会将它们表示为资源的抽象概念。

如果使用Worker,则每个线程都有一个独立的async_hooks接口,每个线程将使用一组新的异步ID。

  • Public API
  • Promise执行跟踪
  • JavaScript Embedder API

Buffer

稳定性:2 - 稳定

在引入TypedArray之前,JavaScript语言没有用于读取或操作二进制数据流的机制,Buffer类是作为Node.js API的一部分引入的,用于在TCP流、文件系统操作和其他上下文中与八位字节流进行交互。

Buffer类的实例类似于整数数组,但对应于V8堆外部的固定大小的原始内存分配,Buffer的大小在创建时建立,无法更改。

Buffer类在全局作用域内,因此不太可能需要使用require('buffer').Buffer

// Creates a zero-filled Buffer of length 10.
const buf1 = Buffer.alloc(10);// Creates a Buffer of length 10, filled with 0x1.
const buf2 = Buffer.alloc(10, 1);// Creates an uninitialized buffer of length 10.
// This is faster than calling Buffer.alloc() but the returned
// Buffer instance might contain old data that needs to be
// overwritten using either fill() or write().
const buf3 = Buffer.allocUnsafe(10);// Creates a Buffer containing [0x1, 0x2, 0x3].
const buf4 = Buffer.from([1, 2, 3]);// Creates a Buffer containing UTF-8 bytes [0x74, 0xc3, 0xa9, 0x73, 0x74].
const buf5 = Buffer.from('tést');// Creates a Buffer containing Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
const buf6 = Buffer.from('tést', 'latin1');
  • Buffer.from(),Buffer.alloc()和Buffer.allocUnsafe()
  • 缓冲区和字符编码
  • 缓冲区和TypedArray
  • 缓冲区和迭代
  • Buffer类
  • buffer.INSPECT_MAX_BYTES
  • buffer.kMaxLength
  • buffer.transcode(source, fromEnc, toEnc)
  • SlowBuffer类 弃用
  • Buffer常量

C++扩展库

Node.js扩展库是动态链接的共享对象,用C++ 编写,可以使用require()函数加载到Node.js中,就像它们是普通的Node.js模块一样使用,它们主要用于提供Node.js中运行的JavaScript与C/C++库之间的接口。

目前,实现扩展库的方法相当复杂,涉及多个组件和API的知识:

  • V8:Node.js目前用来提供JavaScript实现的C++库,V8提供了创建对象、调用函数等的机制,V8的API大多记录在v8.h头文件(Node.js源代码树中的deps/v8/include/v8.h)中,该文件也可在线获取。
  • libuv:实现Node.js事件循环的C库,它工作线程和平台的所有异步行为,它还可以作为跨平台的抽象库,为所有主要操作系统提供简单的类似POSIX访问,以及许多常见的系统任务,例如与文件系统、sockets、定时器和系统事件的交互。libuv还提供类似并行线程的线程抽象,可用于驱动需要超越标准事件循环的更复杂的异步扩展库。鼓励扩展库作者考虑如何通过libuv将工作卸载到非阻塞系统操作,工作线程或libuv线程的自定义使用来避免使用I/O或其他时间密集型任务阻止事件循环。
  • 内部Node.js库,Node.js本身导出了扩展库可以使用的许多C++ API - 其中最重要的是node::ObjectWrap类。
  • Node.js包括许多其他静态链接库,包括OpenSSL,这些其他库位于Node.js源代码树的deps/目录中,Node.js只故意重新导出libuv、OpenSSL、V8和zlib symbols,并且可以通过扩展库在不同的范围内使用,有关其他信息,请参阅链接到Node.js自己的依赖项。

以下所有示例均可供下载,可用作扩展库的起点。

  • Hello world
  • Node.js原生抽象
  • N-API
  • 扩展库示例

C/C++插件 - N-API

稳定性:2 - 稳定

N-API(在字母中发音为N,后跟API)是用于构建原生扩展库的API,它独立于底层JavaScript运行时(前V8),并作为Node.js本身的一部分进行维护,此API将是跨Node.js版本的应用程序二进制接口(ABI)稳定版,它旨在将扩展库与底层JavaScript引擎中的更改隔离开来,并允许为一个主要版本编译的模块在Node.js的后续主要版本上运行而无需重新编译,ABI稳定性指南提供了更深入的解释。

使用与C++扩展库一节中概述的相同方法/工具构建/打包扩展库,唯一的区别是原生代码使用的API集,不使用V8或Node.js原生抽象API,而是使用N-API中可用的功能。

N-API公开的API通常用于创建和操作JavaScript值,概念和操作通常映射到ECMA262语言规范中指定的想法,API具有以下属性:

Node.js API参考文档(目录)相关推荐

  1. Facebook 游戏开发更新文档 API 参考文档 v6.0

    Facebook 游戏开发更新文档 API 参考文档 v6.0 更新日志 1.排行榜 此版本全新推出排行榜 API!提供一套强大的 API, 使得游戏可获取排行榜.查询得分 情况和设置新分数(支持分数 ...

  2. 使用 apiDoc 为你的Node.js API 生成文档

    翻译: 疯狂的技术宅 原文:jonathas.com/documenting- 未经许可,禁止转载! 当你为其他开发人员(前端,桌面,移动等)开发 API 时,需要生成一份风格良好的文档,以便他们知道 ...

  3. README文档模板 含下载地址0积分 项目文档模板 springboot文档示例 readme参考文档 目录跳转 项目架构 使用说明 目录结构 等等 (含附件下载)

    下载地址0积分 项目名称 在线签约(signup) (v1.1.0) 目录 项目简介 功能简述 项目架构 目录结构 使用效果 安装说明 使用说明 开发人员 版权信息 更新日志 项目简介 *-signu ...

  4. node.js解析word文档

    最近接触了了一个简历管理的项目,需要将简历上传之后解析出里面的字段内容(如姓名.性别.教育经历.工作经历等),存入数据库中.简历的格式都是标准的格式,可参考猎聘下载下来的格式. 毫无疑问,第一个难点就 ...

  5. React 参考文档(基于v16.2.0) 01 : 顶层API

    React 顶层API (Top-Level API) React 是整个React库的入口点,你可以将它想象成最顶层的命名空间.当使用<script>标签加载React时,这些顶层API ...

  6. LLVM文档目录框架(索引用)

    注1:主要用于个人学习LLVM查找用,后续会继续更新 注2:加红文字可以ctrl+鼠标点击跳转到对应官方文档 注3:目前大致目录框架如下 概述 LLVM 编译器简介演示文稿 LLVM 简介 LLVM: ...

  7. Java API帮助文档怎么查找?

    [1]打开官方帮助文档(英文):Java SE API 和文档 这里选择官方网站 打开之后,是这样婶儿的 [2]选择合适的版本:这里选择Java 8 [3]打开Java API 主页面 如何查找自己想 ...

  8. YUIDoc example代码高亮错误、生成API文档目录不按源文件注释顺序

    1.如果发现yuidoc命令用不了,那就重装nodejs吧 昨天不知道是清扫电脑的原因,yuidoc命令用不了(命令不存在),也没有找到好的解决方法,怒重装YUIDoc也不行.最后想了想,怒重装了no ...

  9. 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )

    文章目录 一.Module 目录下 build.gradle 配置文件 1.android 闭包块配置 2.AppExtension 扩展类型参考文档 Android Plugin DSL Refer ...

最新文章

  1. 构建安全的 ASP.NET 网页和控件
  2. Label 的作用是什么,是怎么用的?
  3. AI教父杰弗里辛顿:AI反学习可能揭开人类梦境的奥秘
  4. 2019全球AI人才分布图:美国占44%,中国人才净流入
  5. html页面获取服务器时间,[html]定时获取服务器时间和本地时间
  6. Spring AOP详解一文搞懂@Aspect、@Pointcut、@Before、@Around、@After、@AfterReturning、@AfterThrowing
  7. ios 边录音边放_关于Android和iOS系统OneNote支持边录音边记笔记的需求和建议
  8. 【bzoj2820】YY的GCD 莫比乌斯反演
  9. 卷积神经网络结构_卷积神经网络
  10. [北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern
  11. P1375-小猫【卡特兰数】
  12. Magento教程 15:Magento 批次修改产品资料
  13. linux 用户管理和帮助命令
  14. 图片 + 未知宽高 + 垂直居中
  15. python重复字符串n次的函数_LeetCode_Python(3)_无重复字符的最长子串
  16. 原生前端:input标签 number类型输入框如何清除上下加减按钮?
  17. 卡西欧手机计算机软件,卡西欧5800计算器手机版app
  18. java中cleanup的使用_【Lombok注解】@Cleanup 自动资源管理:安全无困扰地调用close方法...
  19. Windows 9X电脑经常出现bluescreen蓝屏怎么办?
  20. ~杂记(3):los_dispatch.s和startup.s的作用分析

热门文章

  1. SAP HUM嵌套HU场景里是否可以直接对内层HU执行VLMOVE?
  2. 人工智能70年,研究者们最不愿意面对的惨痛教训是……
  3. SAP项目里的关键用户,兼职还是专职?
  4. 产品经理的核心能力——看清问题本质
  5. 自然语言对话:未来发展的机遇在哪里?
  6. 一禁了之还是放开应用?面部识别“人红是非多”
  7. 干货 | 旷视科技俞刚:我在旷视研究院做检测
  8. Hinton最新专访:别让AI解释自己,AI寒冬不会再来
  9. 成为真正的变革型CIO,代价几何?
  10. Python相关机器学习‘武器库’