NativeModule 是如何工作的?它们是否被缓存?

How does a NativeModule function and are they cached?

require('http')
console.log(require.cache.http) // undefined

我在 require.cache 中找不到 http 模块?我怎样才能检测到它是必需的?我发现 process.moduleLoadList 包含字符串 NativeModule http 但没有看到任何对缓存模块的引用 它在哪里?

NativeModule 表示未缓存:已编译。是这样定义的,

NativeModule: a minimal module system used to load the JavaScript core modules found in lib/**/*.js and deps/**/*.js. All core modules are compiled into the node binary via node_javascript.cc generated by js2c.py, so they can be loaded faster without the cost of I/O. This class makes the lib/internal/*, deps/internal/* modules and internalBinding() available by default to core modules, and lets the core modules require itself via require('internal/bootstrap/loaders') even when this file is not written in CommonJS style.

周围添加了重点,而没有 I/O“ 的成本,因此不需要缓存。

您可以在lib/internal/bootstrap/loaders.js. You can find the mapping of native modules to source code here, but remember they're not read from disk. You can find js2c.py

中找到该系统