nodejs如何加载原生插件?

How does nodejs load native addons?

我对节点的原生插件的理解方式只是操作系统上的共享对象或动态链接库。不过通常情况下,动态链接库是在加载时链接的。但是在节点中你可以动态地 require() 模块。那么这是如何工作的呢?它更像是使用 dlopen 和函数指针进行动态加载吗?

nodejs 支持用其他语言编写的插件(例如 C/C++)。因此,那些其他语言可以使用所有 OS 工具来动态加载其他 DLL,无论是系统 DLL 还是它们自己的 DLL。

如果你想了解更多关于nodejs插件的过程,你可以看这里:Nodejs Addons.

内置库支持(例如 fs 模块)具有相同的能力。

确实动态加载了节点的本机插件。摘自 this post:

C/C++ addons are just dynamic libraries, and Node loads those libraries with a function in libuv called uv_dlopen. That provides a uniform interface for loading dynamic libraries on both Windows and Unix-like systems.