摘要:參考文檔是基于的引擎構(gòu)建的運(yùn)行時(shí)。關(guān)于文檔用法和示例斷言測(cè)試穩(wěn)定性穩(wěn)定模塊提供了一組簡(jiǎn)單的斷言測(cè)試,可用于測(cè)試不變量。存在和模式,但建議僅使用模式。類在全局作用域內(nèi),因此不太可能需要使用。以下所有示例均可供下載,可用作擴(kuò)展庫(kù)的起點(diǎn)。
Node.js v11.5.0 API參考文檔
Node.js?是基于Chrome的V8 JavaScript引擎構(gòu)建的JavaScript運(yùn)行時(shí)。
關(guān)于文檔
用法和示例
斷言測(cè)試穩(wěn)定性:2 - 穩(wěn)定
assert模塊提供了一組簡(jiǎn)單的斷言測(cè)試,可用于測(cè)試不變量。
存在strict和legacy模式,但建議僅使用strict模式。
有關(guān)使用的相等比較的更多信息,請(qǐng)參閱MDN關(guān)于相等比較和相同性的指南。
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)
異步鉤子穩(wěn)定性:1 - 實(shí)驗(yàn)
async_hooks模塊提供了一個(gè)API來(lái)注冊(cè)回調(diào),跟蹤Node.js應(yīng)用程序內(nèi)部創(chuàng)建的異步資源的生命周期,它可以使用以下方式訪問(wèn):
const async_hooks = require("async_hooks");
異步資源表示具有關(guān)聯(lián)回調(diào)的對(duì)象,可以多次調(diào)用此回調(diào),例如,net.createServer()中的"connection"事件,或者只是fs.open()中的一次。在調(diào)用回調(diào)之前,也可以關(guān)閉資源,AsyncHook沒(méi)有明確區(qū)分這些不同的情況,但會(huì)將它們表示為資源的抽象概念。
如果使用Worker,則每個(gè)線程都有一個(gè)獨(dú)立的async_hooks接口,每個(gè)線程將使用一組新的異步ID。
Public API
Promise執(zhí)行跟蹤
JavaScript Embedder API
Buffer穩(wěn)定性:2 - 穩(wěn)定
在引入TypedArray之前,JavaScript語(yǔ)言沒(méi)有用于讀取或操作二進(jìn)制數(shù)據(jù)流的機(jī)制,Buffer類是作為Node.js API的一部分引入的,用于在TCP流、文件系統(tǒng)操作和其他上下文中與八位字節(jié)流進(jìn)行交互。
Buffer類的實(shí)例類似于整數(shù)數(shù)組,但對(duì)應(yīng)于V8堆外部的固定大小的原始內(nèi)存分配,Buffer的大小在創(chuàng)建時(shí)建立,無(wú)法更改。
Buffer類在全局作用域內(nèi),因此不太可能需要使用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()
緩沖區(qū)和字符編碼
緩沖區(qū)和TypedArray
緩沖區(qū)和迭代
Buffer類
buffer.INSPECT_MAX_BYTES
buffer.kMaxLength
buffer.transcode(source, fromEnc, toEnc)
SlowBuffer類 棄用
Buffer常量
C++擴(kuò)展庫(kù)Node.js擴(kuò)展庫(kù)是動(dòng)態(tài)鏈接的共享對(duì)象,用C++ 編寫(xiě),可以使用require()函數(shù)加載到Node.js中,就像它們是普通的Node.js模塊一樣使用,它們主要用于提供Node.js中運(yùn)行的JavaScript與C/C++庫(kù)之間的接口。
目前,實(shí)現(xiàn)擴(kuò)展庫(kù)的方法相當(dāng)復(fù)雜,涉及多個(gè)組件和API的知識(shí):
V8:Node.js目前用來(lái)提供JavaScript實(shí)現(xiàn)的C++庫(kù),V8提供了創(chuàng)建對(duì)象、調(diào)用函數(shù)等的機(jī)制,V8的API大多記錄在v8.h頭文件(Node.js源代碼樹(shù)中的deps/v8/include/v8.h)中,該文件也可在線獲取。
libuv:實(shí)現(xiàn)Node.js事件循環(huán)的C庫(kù),它工作線程和平臺(tái)的所有異步行為,它還可以作為跨平臺(tái)的抽象庫(kù),為所有主要操作系統(tǒng)提供簡(jiǎn)單的類似POSIX訪問(wèn),以及許多常見(jiàn)的系統(tǒng)任務(wù),例如與文件系統(tǒng)、sockets、定時(shí)器和系統(tǒng)事件的交互。libuv還提供類似并行線程的線程抽象,可用于驅(qū)動(dòng)需要超越標(biāo)準(zhǔn)事件循環(huán)的更復(fù)雜的異步擴(kuò)展庫(kù)。鼓勵(lì)擴(kuò)展庫(kù)作者考慮如何通過(guò)libuv將工作卸載到非阻塞系統(tǒng)操作,工作線程或libuv線程的自定義使用來(lái)避免使用I/O或其他時(shí)間密集型任務(wù)阻止事件循環(huán)。
內(nèi)部Node.js庫(kù),Node.js本身導(dǎo)出了擴(kuò)展庫(kù)可以使用的許多C++ API - 其中最重要的是node::ObjectWrap類。
Node.js包括許多其他靜態(tài)鏈接庫(kù),包括OpenSSL,這些其他庫(kù)位于Node.js源代碼樹(shù)的deps/目錄中,Node.js只故意重新導(dǎo)出libuv、OpenSSL、V8和zlib symbols,并且可以通過(guò)擴(kuò)展庫(kù)在不同的范圍內(nèi)使用,有關(guān)其他信息,請(qǐng)參閱鏈接到Node.js自己的依賴項(xiàng)。
以下所有示例均可供下載,可用作擴(kuò)展庫(kù)的起點(diǎn)。
Hello world
Node.js原生抽象
N-API
擴(kuò)展庫(kù)示例
C/C++插件 - N-API穩(wěn)定性:2 - 穩(wěn)定
N-API(在字母中發(fā)音為N,后跟API)是用于構(gòu)建原生擴(kuò)展庫(kù)的API,它獨(dú)立于底層JavaScript運(yùn)行時(shí)(前V8),并作為Node.js本身的一部分進(jìn)行維護(hù),此API將是跨Node.js版本的應(yīng)用程序二進(jìn)制接口(ABI)穩(wěn)定版,它旨在將擴(kuò)展庫(kù)與底層JavaScript引擎中的更改隔離開(kāi)來(lái),并允許為一個(gè)主要版本編譯的模塊在Node.js的后續(xù)主要版本上運(yùn)行而無(wú)需重新編譯,ABI穩(wěn)定性指南提供了更深入的解釋。
使用與C++擴(kuò)展庫(kù)一節(jié)中概述的相同方法/工具構(gòu)建/打包擴(kuò)展庫(kù),唯一的區(qū)別是原生代碼使用的API集,不使用V8或Node.js原生抽象API,而是使用N-API中可用的功能。
N-API公開(kāi)的API通常用于創(chuàng)建和操作JavaScript值,概念和操作通常映射到ECMA262語(yǔ)言規(guī)范中指定的想法,API具有以下屬性:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99141.html
摘要:文檔是基于的引擎構(gòu)建的運(yùn)行時(shí)。本文檔描述了提供的內(nèi)置模塊,它不記錄社區(qū)提供的模塊。指南指南部分包含有關(guān)技術(shù)功能和性能的長(zhǎng)篇深入文章。 Node.js 文檔 Node.js?是基于Chrome的V8 JavaScript引擎構(gòu)建的JavaScript運(yùn)行時(shí)。 提供以下幾種類型的文檔: API參考文檔 ES6功能 指南 API參考文檔 API參考文檔提供了有關(guān)Node.js中的函數(shù)或?qū)?..
摘要:關(guān)于文檔本文檔的目的是從參考和概念的角度全面解釋,每個(gè)部分都描述了內(nèi)置模塊或高級(jí)概念。文檔鏈接到相應(yīng)的手冊(cè)頁(yè)手冊(cè)頁(yè)的簡(jiǎn)稱,描述了系統(tǒng)調(diào)用的工作方式。上一篇參考文檔目錄下一篇用法和示例 關(guān)于文檔 本文檔的目的是從參考和概念的角度全面解釋Node.js API,每個(gè)部分都描述了內(nèi)置模塊或高級(jí)概念。 在適當(dāng)?shù)那闆r下,屬性類型、方法參數(shù)和提供給事件處理程序的參數(shù)將在主題標(biāo)題下方的列表中詳細(xì)說(shuō)明...
摘要:首先聲明下,是基于注釋來(lái)生成文檔的,它不基于任何框架,而且支持大多數(shù)編程語(yǔ)言,為了系列的完整性,所以標(biāo)了個(gè)題。二準(zhǔn)備工作安裝完安裝它的項(xiàng)目源碼。輸命令輸入目錄輸出目錄是我的工程名。 首先聲明下,apidoc是基于注釋來(lái)生成文檔的,它不基于任何框架,而且支持大多數(shù)編程語(yǔ)言,為了springboot系列的完整性,所以標(biāo)了個(gè)題。 一、apidoc簡(jiǎn)介 apidoc通過(guò)在你代碼的注釋來(lái)生成ap...
摘要:關(guān)于本文檔本文檔的目的,是全面地解釋的,即可作為參考文檔,同時(shí)也包含了概念的講解。但有的全新的實(shí)驗(yàn)性的,或者存在危險(xiǎn)性的部分則會(huì)被重新設(shè)計(jì)。穩(wěn)定級(jí)別鎖定只會(huì)有安全性能或相關(guān)的修復(fù)。不接受對(duì)此做修改的建議。 關(guān)于本文檔 本文檔的目的,是全面地解釋Node.js的API,即可作為參考文檔,同時(shí)也包含了概念的講解。每個(gè)章節(jié)都描述了一個(gè)內(nèi)置模塊或一個(gè)高階概念(high-level concep...
摘要:的另一種形式測(cè)試踩坑之路代碼覆蓋率單元測(cè)試的代碼覆蓋率統(tǒng)計(jì),是衡量測(cè)試用例好壞的一個(gè)的方法。 showImg(https://segmentfault.com/img/remote/1460000012564211?w=640&h=280); 項(xiàng)目地址: diana文檔地址: http://muyunyun.cn/diana/ 造輪子的意義 為啥已經(jīng)有如此多的前端工具類庫(kù)還要自己造輪...
閱讀 3179·2023-04-25 17:19
閱讀 625·2021-11-23 09:51
閱讀 1352·2021-11-08 13:19
閱讀 787·2021-09-29 09:34
閱讀 1686·2021-09-28 09:36
閱讀 1502·2021-09-22 14:59
閱讀 2718·2019-08-29 16:38
閱讀 2062·2019-08-26 13:40