背景
- C/C++实现了一个http_parser库,很高效
- 你只会写JS,但是你想调用这个库
- 直接调用肯定是不能成功的,你需要一个中间桥梁
bindings
例如:
- Nodejs用C++对http_parser进行封装,使它符合某些要求(比如它的数据类型跟js的数据类型做一个统一),封装的文件叫做http_parser_bindings.cpp(c++文件)
- 用Nodejs提供的编译工具将其编译为.node文件
- JS代码可以直接require这个.node文件
- 这样JS就能调用C++库,中间的桥梁就是binding
- 由于Nodejs提供了很多binding,所以加个s
- 这就是bindings
JS与C++交互
JS调用C++代码
官方示例
之前的C++代码都不用看,因为我不懂,我只需要知道怎么用就可以了
示例插件就可以在 Node.js 中引入和使用:
// test.js
const addon = require('./build/Release/addon'); //addon是c++文件
console.log('This should be eight:', addon.add(3, 5));
C++调用JS回调
// test.js
const addon = require('./build/Release/addon');
addon((msg) => {
console.log(msg);
// 打印: 'hello world'
});
//c++代码会调用传进去的函数
Nodejs还提供了其他交互方式,这里只是一些例子
这里只是了解一下js和C++是怎么交互的