Ils constituent un moyen d'augmenter les performances et les fonctionnalités de votre code Node.js, en étendant le code C directement dans l'environnement JavaScript. En d'autres termes, un module complémentaire C est un module que vous créez pour Node.js qui vous permet d'écrire des fonctions et des bibliothèques C et de les utiliser dans votre code JavaScript.
Ils constituent essentiellement un pont entre JavaScript et C, ce qui signifie que Node.js peut exécuter des codes plus lourds sans perdre en flexibilité et, surtout, en simplicité.
Tout d'abord, créons un répertoire pour notre code
mkdir addon cd addon
Ensuite, créons, initialisons notre package.json et téléchargeons la lib node-gyp (assurez-vous d'installer correctement les dépendances sur votre OS)
npm init -y npm i node-gyp
Au sein de notre package.json, nous allons créer un script de build pour notre module complémentaire.
mkdir addon cd addon
Maintenant, nous allons créer notre addon en C et configurer notre liaison.
npm init -y npm i node-gyp
"scripts": { "build": "node-gyp configure build" }
Prêt, une fois ces deux fichiers créés, nous pouvons exécuter notre script de build (npm run build) et attendre l'ensemble du processus pour pouvoir profiter de notre addon. Ensuite, nous allons créer un nouveau fichier et exécuter la commande node index.js
dans le 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) }
Les modules complémentaires sont des ressources puissantes lorsque l'objectif est d'optimiser les performances des opérations critiques ou de s'intégrer au code natif. Bien qu’ils nécessitent une connaissance du C et augmentent la complexité du projet, ils peuvent constituer la solution parfaite dans les situations où le JavaScript pur n’offre pas la solution idéale. Grâce à des outils comme N-API, le développement d'addons est devenu plus accessible et stable, permettant à vos projets de combiner la praticité de JavaScript avec l'efficacité du C .
Lien du référentiel : cpp-addon-nodejs
Références : Node.js
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!