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