怎么理解nodejs模块为json或者C/C++扩展?
在node.js里面,一个node.js文件就是一个模块。
node.js文件可能是:
1.JavaScript代码
2.JSON
3.编译后的C/C++扩展
node.js 可能是js代码我能理解,但是后面2者如何理解呢?能否举例说明?
回复
1个回答

test
2024-07-20
简单点说就是在 Node.js 中,可以 require 这三种文件
对于 JSON ,可以创建一个JSON文件测试
c++ 扩展 指得是用 c++ 编写的本机模块,nodejs 文档中称为 "C++ addons",require
可以像普通的 Node.js 模块一样加载它,以最简单的 N-API 举例(我这里用的是 linux,不同的操作系统配置可能不一样,可查看官方文档)
首先要安装 node-gyp 工具
npm i -g node-gyp
创建 add.cc 文件实现了一个简单的加法
#include <node.h> void Add(const v8::FunctionCallbackInfo<v8::Value> &args) { auto isolate = args.GetIsolate(); auto arg0 = args[0].As<v8::Number>()->Value(); auto arg1 = args[1].As<v8::Number>()->Value(); v8::Local<v8::Number> num = v8::Number::New(isolate, arg0 + arg1); args.GetReturnValue().Set(num); } void Init(v8::Local<v8::Object> exports) { NODE_SET_METHOD(exports, "add", Add); } NODE_MODULE(NODE_GYP_MODULE_NAME, Init)
然后添加一个名为
binding.gyp
的文件,内容如下{ 'targets': [ { 'target_name': 'add', 'sources': [ 'add.cc' ] } ] }
然后运行以下命令
node-gyp configure && node-gyp build
如果一切顺利的话会生成
build
文件夹,内容如下❯ tree . ├── add.cc ├── binding.gyp ├── build │ ├── add.target.mk │ ├── binding.Makefile │ ├── config.gypi │ ├── Makefile │ ├── node_gyp_bins │ │ └── python3 -> /usr/sbin/python3 │ └── Release │ ├── add.node │ └── obj.target │ ├── add │ │ └── add.o │ └── add.node ├── compile_commands.json └── test.json
directories, 12 files
- 现在
build/Release/add.node
文件就可以作为 Node.js 模块加载了
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容