目标
上一篇我们只是简单的把 C++ 环境中的函数暴露到 Javascript 环境中调用,这篇我们更进一步,学会操作函数参数、返回值以及 V8 异常处理。
写一个简单 Math.add()
函数传给 js 环境,使以下代码可运行:
1 | // app.js |
然后我们修改一下这个 app.js
,给 Math.add()
传入非法参数,学习处理 V8 异常:
1 | // app.js |
代码 & 说明
1 | // expose-func-params.cc |
编译
v8 编译相关请查看 Javascript Engine V8 Embedding - 编译
1 | g++ -I. -Iinclude expose-func-params.cc -lv8_monolith -Lout.gn/x64.release.sample/obj/ -pthread -std=c++0x -o inode |
执行
1 | ./inode app.js # output: `1024` |
说明
代码已经比较清晰了,还配有简单的注释说明。
这节主要是展示 V8 函数参数的处理,抛出 js 异常,在 C++ 中处理 V8 抛出的异常。
到这篇为止,我们已经可以很自由的扩展 js 的能力了, 可以用 V8 做出很 cool 的东西了。
相关链接
- 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