使用Node-API绑定C库的完整实战
不依赖node-gyp,通过Node-API直接调用系统级C函数 · 难度:入门 · +10XP
Node-API的革命
Node-API(N-API)是Node.js官方的ABI稳定层,无需编译即可在不同版本间兼容。我们将用纯C语言编写一个加法模块,并通过binding.gyp配置编译,最后在JavaScript中调用。重点处理类型转换和内存管理。
// addon.c
#include <node_api.h>
napi_value Add(napi_env env, napi_callback_info info) {
size_t argc = 2;
napi_value args[2];
napi_get_cb_info(env, info, &argc, args, NULL, NULL);
double a, b;
napi_get_value_double(env, args[0], &a);
napi_get_value_double(env, args[1], &b);
napi_value result;
napi_create_double(env, a + b, &result);
return result;
}
NAPI_MODULE_INIT() {
napi_value fn;
napi_create_function(env, NULL, 0, Add, NULL, &fn);
napi_set_named_property(env, exports, "add", fn);
return exports;
}