Sie sind eine Möglichkeit, die Leistung und Funktionalität Ihres Node.js-Codes zu steigern, indem C-Code direkt in der JavaScript-Umgebung erweitert wird. Mit anderen Worten, ein C-Add-on ist ein Modul, das Sie für Node.js erstellen und das es Ihnen ermöglicht, C-Funktionen und Bibliotheken zu schreiben und diese in Ihrem JavaScript-Code zu verwenden.
Sie sind im Grunde eine Brücke zwischen JavaScript und C, was bedeutet, dass Node.js umfangreichere Codes ausführen kann, ohne an Flexibilität und vor allem an Einfachheit einzubüßen.
Erstellen wir zunächst ein Verzeichnis für unseren Code
mkdir addon cd addon
Als nächstes erstellen wir unsere package.json und laden die Bibliothek node-gyp herunter (stellen Sie sicher, dass Sie die Abhängigkeiten auf Ihrem Betriebssystem korrekt installieren)
npm init -y npm i node-gyp
In unserem package.json erstellen wir ein Build-Skript für unser Add-on.
mkdir addon cd addon
Jetzt erstellen wir unser Add-on in C und konfigurieren unsere Bindung.
npm init -y npm i node-gyp
"scripts": { "build": "node-gyp configure build" }
Fertig, sobald diese beiden Dateien erstellt sind, können wir unser Build-Skript ausführen (npm run build) und auf den gesamten Prozess warten, um unser Add-on nutzen zu können. Als nächstes erstellen wir eine neue Datei und führen den Befehl node index.js
im Terminal aus
// 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) }
Add-ons sind leistungsstarke Ressourcen, wenn das Ziel darin besteht, die Leistung bei kritischen Vorgängen zu optimieren oder in nativen Code zu integrieren. Obwohl sie C-Kenntnisse erfordern und die Projektkomplexität erhöhen, können sie die perfekte Lösung für Situationen sein, in denen reines JavaScript nicht die ideale Lösung bietet. Dank Tools wie N-API ist die Add-on-Entwicklung zugänglicher und stabiler geworden, sodass Ihre Projekte die Praktikabilität von JavaScript mit der Effizienz von C kombinieren können.
Repository-Link: cpp-addon-nodejs
Referenzen: Node.js
Das obige ist der detaillierte Inhalt vonC-Addons ohne Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!