So verwenden Sie C für die Interaktion mit dem Knoten: Wenn im Knotenprogramm eine große Datenmenge berechnet wird und die Verarbeitung relativ langsam ist, können Sie sie mit C verarbeiten und dann an den Knoten zurückgeben ein Rückruf (in Form eines Rückrufs). Sehen wir uns zunächst die orthodoxe Methode zur Entwicklung nativer Module in C
an#include <node.h> #include <v8.h> using namespace v8; // 这里是 hello 函数的 C++ 实现部分 Handle<Value> Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("world")); } // 这里是模块的初始化函数,必须有 void init(Handle<Object> exports) { exports->Set(String::NewSymbol("hello"), FunctionTemplate::New(Method)->GetFunction()); } // 这里定义本模块的名字和初始化函数 NODE_MODULE(hello, init)
Wenn dieses Modul in Node geschrieben ist, sieht es so aus:
exports.hello = function() { return 'world'; }; 为了编译 C++ 这个模块,还需要一个 JSON 格式的 binding.gyp 文件,来定义编译的细节。 { "targets": [ { "target_name": "hello", "sources": [ "hello.cpp" ] } ] }
Führen Sie den Node-Gyp-Configure-Build aus, um ihn direkt zu kompilieren.
node test.js: var addon = require('./build/Release/hello'); console.log(addon.hello());
Ergebnis ausgeben.
Auf diese Weise kann der Knoten in C geschriebene Programme direkt aufrufen.
Erklärung des obigen Programms: In hello.cc haben wir zuerst eine Funktionsmethode erstellt, die eine Zeichenfolge von „Hallo, Welt“ zurückgibt, und dann haben wir eine Init-Funktion als Initialisierungsfunktion erstellt und eine Funktion <🎜 aufgerufen >
Schließlich binden wir dieses Modul als: NODE_MODULE(hello, init)Auf der offiziellen Website wird darauf hingewiesen, dass alle Node-Plug-Ins eine Initialisierungsfunktion ausgeben müssen, was bedeutet, dass der folgende Code in jedem Modul vorhanden sein muss und ein festes Format hat.
void Initialize (Handle<Object> exports); NODE_MODULE(module_name, Initialize)
Nachdem der Node-Gyp-Configure-Build kompiliert wurde, wird ein neuer Build-Ordner unter der aktuellen Datei generiert. Indem wir auf das Ergebnis dieses Builds in test.js verweisen, können wir das in C geschriebene Programm aufrufen.