目标
上一篇我们把 C++ 环境中的对象暴露到 Javascript 环境中,这篇我们要将 C++ 环境中的 函数
暴露到 Javascript 环境中,写一个简单 console.log
函数传给 js 环境,使以下代码可运行:
1 | // app.js |
代码 & 说明
1 | // expose-func.cc |
编译
v8 编译相关请查看 Javascript Engine V8 Embedding - 编译
1 | g++ -I. -Iinclude expose-func.cc -lv8_monolith -Lout.gn/x64.release.sample/obj/ -pthread -std=c++0x -o inode |
执行
1 | ./inode app.js # output: `Hi, 老根!` |
说明
和上一篇同理,将函数暴露给 js 和 将变量暴露给 js 是类似的。都是将 C++ 对象绑定到 Context Global 对象上,通过这种方式,我们就可以扩展 js 的能力了。
相关链接
- Getting started with embedding V8: https://v8.dev/docs/embed#advanced-guide
- Node.js C++ Addons: https://nodejs.org/dist/latest-v10.x/docs/api/addons.html