插件是用 C++ 编写的动态链接共享对象。
require() 函数可以将插件加载为普通的 Node.js 模块。
V8 提供了创建对象、调用函数等的机制。 V8 的 API 主要记录在
libuv: 实现 Node.js 事件循环、其工作线程和平台所有异步行为的 C 库。 它还可以作为跨平台的抽象库，提供跨所有主要操作系统对许多常见系统任务的简单的、类似于 POSIX 的访问，例如与文件系统、套接字、定时器和系统事件的交互。
内部 Node.js 库。 Node.js 自身导出了插件可以使用的 C++ API，其中最重要的是
Node.js 包括了其他静态链接库，包括 OpenSSL。 这些其他库位于 Node.js 源代码树的
deps/目录中。 只有 libuv、OpenSSL、V8 和 zlib 符号被 Node.js 有目的地重新导出，并且可以被插件在不同程度上使用。 有关其他信息，请参阅链接到 Node.js 中包含的库。
Addons are dynamically-linked shared objects written in C++. The
require() function can load addons as ordinary Node.js modules.
There are three options for implementing addons: N-API, nan, or direct use of internal V8, libuv and Node.js libraries. Unless there is a need for direct access to functionality which is not exposed by N-API, use N-API. Refer to C/C++ addons with N-API for more information on N-API.
When not using N-API, implementing addons is complicated, involving knowledge of several components and APIs:
v8.hheader file (
deps/v8/include/v8.hin the Node.js source tree), which is also available online.
libuv: The C library that implements the Node.js event loop, its worker threads and all of the asynchronous behaviors of the platform. It also serves as a cross-platform abstraction library, giving easy, POSIX-like access across all major operating systems to many common system tasks, such as interacting with the filesystem, sockets, timers, and system events. libuv also provides a pthreads-like threading abstraction that may be used to power more sophisticated asynchronous addons that need to move beyond the standard event loop. Addon authors are encouraged to think about how to avoid blocking the event loop with I/O or other time-intensive tasks by off-loading work via libuv to non-blocking system operations, worker threads or a custom use of libuv's threads.
Internal Node.js libraries. Node.js itself exports C++ APIs that addons can use, the most important of which is the
Node.js includes other statically linked libraries including OpenSSL. These other libraries are located in the
deps/directory in the Node.js source tree. Only the libuv, OpenSSL, V8 and zlib symbols are purposefully re-exported by Node.js and may be used to various extents by addons. See Linking to libraries included with Node.js for additional information.
All of the following examples are available for download and may be used as the starting-point for an addon.