摘要:參考文檔是基于的引擎構建的運行時。關于文檔用法和示例斷言測試穩定性穩定模塊提供了一組簡單的斷言測試,可用于測試不變量。存在和模式,但建議僅使用模式。類在全局作用域內,因此不太可能需要使用。以下所有示例均可供下載,可用作擴展庫的起點。
Node.js v11.5.0 API參考文檔
Node.js?是基于Chrome的V8 JavaScript引擎構建的JavaScript運行時。
關于文檔
用法和示例
斷言測試穩定性:2 - 穩定
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)
異步鉤子穩定性: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具有以下屬性:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99141.html
摘要:文檔是基于的引擎構建的運行時。本文檔描述了提供的內置模塊,它不記錄社區提供的模塊。指南指南部分包含有關技術功能和性能的長篇深入文章。 Node.js 文檔 Node.js?是基于Chrome的V8 JavaScript引擎構建的JavaScript運行時。 提供以下幾種類型的文檔: API參考文檔 ES6功能 指南 API參考文檔 API參考文檔提供了有關Node.js中的函數或對...
摘要:關于文檔本文檔的目的是從參考和概念的角度全面解釋,每個部分都描述了內置模塊或高級概念。文檔鏈接到相應的手冊頁手冊頁的簡稱,描述了系統調用的工作方式。上一篇參考文檔目錄下一篇用法和示例 關于文檔 本文檔的目的是從參考和概念的角度全面解釋Node.js API,每個部分都描述了內置模塊或高級概念。 在適當的情況下,屬性類型、方法參數和提供給事件處理程序的參數將在主題標題下方的列表中詳細說明...
摘要:首先聲明下,是基于注釋來生成文檔的,它不基于任何框架,而且支持大多數編程語言,為了系列的完整性,所以標了個題。二準備工作安裝完安裝它的項目源碼。輸命令輸入目錄輸出目錄是我的工程名。 首先聲明下,apidoc是基于注釋來生成文檔的,它不基于任何框架,而且支持大多數編程語言,為了springboot系列的完整性,所以標了個題。 一、apidoc簡介 apidoc通過在你代碼的注釋來生成ap...
摘要:關于本文檔本文檔的目的,是全面地解釋的,即可作為參考文檔,同時也包含了概念的講解。但有的全新的實驗性的,或者存在危險性的部分則會被重新設計。穩定級別鎖定只會有安全性能或相關的修復。不接受對此做修改的建議。 關于本文檔 本文檔的目的,是全面地解釋Node.js的API,即可作為參考文檔,同時也包含了概念的講解。每個章節都描述了一個內置模塊或一個高階概念(high-level concep...
摘要:的另一種形式測試踩坑之路代碼覆蓋率單元測試的代碼覆蓋率統計,是衡量測試用例好壞的一個的方法。 showImg(https://segmentfault.com/img/remote/1460000012564211?w=640&h=280); 項目地址: diana文檔地址: http://muyunyun.cn/diana/ 造輪子的意義 為啥已經有如此多的前端工具類庫還要自己造輪...
閱讀 3162·2023-04-25 17:19
閱讀 616·2021-11-23 09:51
閱讀 1339·2021-11-08 13:19
閱讀 776·2021-09-29 09:34
閱讀 1673·2021-09-28 09:36
閱讀 1494·2021-09-22 14:59
閱讀 2708·2019-08-29 16:38
閱讀 2053·2019-08-26 13:40