Electron 与原生模块交互(Node.js C++ Addons)
在桌面应用开发中,有时需要调用底层系统功能或优化性能,这就需要用到 Node.js 的原生模块(C++ Addons)。Electron 支持通过 node-gyp 编译和加载这些模块,从而实现与底层系统的无缝交互。
1. 调用原生模块
1.1 什么是原生模块?
原生模块是用 C++ 编写的扩展模块,能够直接访问底层系统资源,提供更高的性能和灵活性。
1.2 如何加载原生模块?
以下是一个简单的示例:
const addon = require('./build/Release/addon.node');
console.log(addon.hello()); // 输出:'Hello from C++'
1.3 注意事项
- 确保模块已正确编译并生成
.node文件。 - 模块路径需为绝对路径或打包后的相对路径。
2. 使用 node-gyp 编译模块
2.1 什么是 node-gyp?
node-gyp 是一个跨平台工具,用于编译 Node.js 原生模块。它基于 gyp 工具链,支持多种平台和架构。
2.2 如何配置 node-gyp?
- 创建
binding.gyp文件,定义模块的编译规则:
{"targets":[{"target_name":"addon","sources":["src/addon.cc"]}]}
- 初始化 node-gyp 配置:
npm install -g node-gyp
node-gyp configure
- 编译模块:
node-gyp build
2.3 示例:编写一个简单的 C++ 模块
以下是一个简单的 C++ 模块示例:


