既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
2. node-addon-api 简介
node-addon-api
是一个为 Node.js 编写的 C++ 插件提供的高级 C++ API。它提供了一组功能强大的工具,使得开发人员能够轻松地在 C++ 和 JavaScript 之间进行交互。
3. 安装和设置
3.1 安装 Node.js 和 npm:
# 安装 Node.js
wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz
tar xvf node-v16.14.2-linux-x64.tar.xz
ln -s /path/to/node-v16.14.2-linux-x64/bin/* /usr/local/bin/
# 验证安装
node -v
npm -v
3.2 创建新项目
mkdir my-node-addon
cd my-node-addon
3.3 初始化项目
npm init -y
3.4 安装 node-addon-api:
node-gyp configure build
3.5 在 Node.js 中使用插件
编译完成后,你可以在 Node.js 中使用你的插件。以下是一个简单的示例:
// 根据实际情况调整路径。
const addon = require('./build/Release/addon');
// 输出 2。注意,这只是一个简单的示例,实际情况可能会更复杂。你可能需要处理错误、进行类型检查等。
console.log(addon.add(1));
4. 编写 C++ 插件
4.1 创建 C++ 源文件
在 src
目录下创建一个新文件,例如 addon.cc
。
4.2 编写 C++ 代码
在 addon.cc
文件中,使用 node-addon-api
的 API 来编写你的 C++ 代码。例如:
#include <node_addon_api.h>
napi_value Add(napi_env env, napi_callback_info info) {
size_t argc = 1;
napi_value args[1];
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, nullptr, nullptr));
int32_t result = 0;
if (argc >= 1) {
NAPI_CALL(env, napi_get_value_int32(env, args[0], &result));
}
return napi_value_wrap_int32(env, result + 1); // 这里只是简单地将输入参数加一并返回。
}
4.3 暴露 API
在 binding.gyp
文件中定义你的 API:
{
"targets": [
{
"target_name": "myaddon",
"sources": ["addon.cc"],
"include_dirs": ["<!(node -p \"require('node-addon-api').include\")"]
}
]
}
然后在 src
目录下创建一个 binding.gyp
文件,并将上面的代码复制到该文件中。这将告诉 node-gyp
如何编译你的插件。
4.4 编译插件
在项目根目录中运行以下命令:
node-gyp configure build --target=v16.14.2 --arch=x64 --build_type=Release --msvs_version=2019 --dist_summary=full --dist_summary_format=full --no-rebuild --force-process-config --force-clean --verbose --napi_version=4 --napi_build_version=0 --napi_nodejs_version=v16.14.2 --napi_build_type=Release --napi_build64=false --napi_legacy_base_node=false --napi_compiler=clang++ --napi_deployment_target=89 --napi_default_libraries=false --napi_multiversion=false --napi_parent_path=src --napi_buildroot=out --napi_libroot=out/Release/obj.target --napi_sharedlinkflags="" --napi_sharedlibs="" --napi_sharedlibsonlyflags="" --napi_sharedlibslinkflags="" --napi_sharedlibslibs="" --napi_nodejsroot="" --napi_distfile="" --napi_installroot="" --napi_nodejslibname="" --napi_build32=true --napi_build64=false --napi_nodejslib32=out/Release/obj.target/nodejs/defaultlib.target/src/nodejslib.node --napi_nodejslib64=out/Release/obj.target/nodejs/defaultlib.target/obj/defaultlib.o ""myaddon"" "--modulemap=out/Release/obj.target/nodejs/defaultlib.target/src/myaddon/myaddon.modulemap"" "--backendflags=--no-tsan"" "--backendflags=""" "--backendflags
4.5 测试和调试
使用 Node.js 运行你的插件。例如,创建一个名为 test.js
的文件,并编写以下代码:
const addon = require('./build/Release/myaddon');
console.log(addon.add(2, 3)); // 调用你定义的 Add 函数,并传入两个参数 2 和 3
在项目根目录中运行以下命令:
node test.js
这将运行你的测试代码并输出结果。如果一切正常,你应该看到输出 5
。
5. 在 Node.js 中使用插件
5.1 引入插件
在你的 JavaScript 文件中,使用 require
函数来引入编译后的插件文件。例如:
const addon = require('./build/Release/myaddon');
5.2 调用 C++ 函数
使用引入的插件对象来调用你在 C++ 中定义的函数。例如:
const result = addon.add(1, 2);
console.log(result); // 输出 3,这是 C++ 函数 Add 的返回值
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新