JavaScript调用C语言的几种方式
2025-04-16 14:19:48
11
参考资料
WebAssembly (Wasm)
编译C代码为Wasm模块
使用JavaScript加载并实例化Wasm模块
通过导出函数调用C函数
Node.js原生扩展
使用N-API或node-gyp工具
编写C++绑定代码
编译生成.node文件
通过require()加载模块
Emscripten工具链
使用emcc编译器将C代码编译为asm.js/Wasm
生成JavaScript胶水代码
通过Module对象调用C函数
浏览器插件(已淘汰)
NPAPI插件(已废弃)
ActiveX控件(仅IE)
子进程调用
Node.js通过child_process执行C程序
使用stdin/stdout进行进程间通信
FFI(外部函数接口)
使用node-ffi等库
直接调用动态链接库(.so/.dll)
Web Workers
在Worker中运行Wasm模块
通过postMessage通信
SharedArrayBuffer
共享内存方式通信
需要配合Atomics操作
最佳实践推荐:
浏览器环境首选WebAssembly
Node.js环境优先考虑N-API原生扩展
性能关键场景使用Emscripten优化