They are a way to increase the performance and functionality of your Node.js code, extending C code directly in the JavaScript environment. In other words, a C addon is a module you create for Node.js that allows you to write C functions and libraries and use them in your JavaScript code.
They are basically a bridge between JavaScript and C, which means that Node.js can run heavier codes without losing flexibility and, above all, its simplicity.
First, let's create a directory for our code
mkdir addon cd addon
Next, let's create initialize our package.json and download the lib node-gyp (make sure to correctly install the dependencies on your OS)
npm init -y npm i node-gyp
Within our package.json, we will create a build script for our addon.
mkdir addon cd addon
Now, we will create our addon in C and configure our binding.
npm init -y npm i node-gyp
"scripts": { "build": "node-gyp configure build" }
Ready, once these two files are created, we can run our build script (npm run build) and wait for the entire process to be able to enjoy our addon. Next, we will create a new file and execute the command node index.js
in the terminal
// array_sum.cpp #include <node.h> namespace demo { using v8::Array; using v8::Context; using v8::Exception; using v8::FunctionCallbackInfo; using v8::Isolate; using v8::Local; using v8::Number; using v8::Object; using v8::Value; void SumArray(const FunctionCallbackInfo<Value> &args) { Isolate *isolate = args.GetIsolate(); Local<Context> context = isolate->GetCurrentContext(); Local<Array> array = Local<Array>::Cast(args[0]); uint32_t length = array->Length(); double sum = 0; for (uint32_t i = 0; i < length; ++i) { Local<Value> element = array->Get(context, i).ToLocalChecked(); if (element->IsNumber()) { sum += element->NumberValue(context).FromJust(); } } args.GetReturnValue().Set(Number::New(isolate, sum)); } void Initialize(Local<Object> exports) { NODE_SET_METHOD(exports, "sum", SumArray); } NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) }
Addons are powerful resources when the objective is to optimize performance in critical operations or integrate with native code. Although they require knowledge of C and increase project complexity, they can be the perfect solution for situations where pure JavaScript does not offer the ideal solution. Thanks to tools like N-API, addon development has become more accessible and stable, allowing your projects to combine the practicality of JavaScript with the efficiency of C .
Repository Link: cpp-addon-nodejs
References: Node.js
The above is the detailed content of C Addons no Node.js. For more information, please follow other related articles on the PHP Chinese website!