Ia adalah cara untuk meningkatkan prestasi dan kefungsian kod Node.js anda, memanjangkan kod C terus dalam persekitaran JavaScript. Dalam erti kata lain, tambahan C ialah modul yang anda buat untuk Node.js yang membolehkan anda menulis fungsi dan perpustakaan C serta menggunakannya dalam kod JavaScript anda.
Ia pada asasnya adalah jambatan antara JavaScript dan C, yang bermaksud bahawa Node.js boleh menjalankan kod yang lebih berat tanpa kehilangan fleksibiliti dan, di atas semua, kesederhanaannya.
Pertama, mari buat direktori untuk kod kami
mkdir addon cd addon
Seterusnya, mari buat permulaan package.json kami dan muat turun lib node-gyp (pastikan anda memasang kebergantungan pada OS anda dengan betul)
npm init -y npm i node-gyp
Dalam package.json kami, kami akan mencipta skrip binaan untuk addon kami.
mkdir addon cd addon
Sekarang, kami akan mencipta addon kami dalam C dan mengkonfigurasi pengikatan kami.
npm init -y npm i node-gyp
"scripts": { "build": "node-gyp configure build" }
Sedia, setelah kedua-dua fail ini dibuat, kami boleh menjalankan skrip binaan kami (npm run build) dan tunggu sehingga keseluruhan proses dapat menikmati addon kami. Seterusnya, kami akan mencipta fail baharu dan laksanakan arahan node index.js
dalam 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) }
Tambahan ialah sumber yang berkuasa apabila objektifnya adalah untuk mengoptimumkan prestasi dalam operasi kritikal atau disepadukan dengan kod asli. Walaupun mereka memerlukan pengetahuan tentang C dan meningkatkan kerumitan projek, mereka boleh menjadi penyelesaian yang sempurna untuk situasi di mana JavaScript tulen tidak menawarkan penyelesaian yang ideal. Terima kasih kepada alatan seperti N-API, pembangunan addon telah menjadi lebih mudah diakses dan stabil, membolehkan projek anda menggabungkan kepraktisan JavaScript dengan kecekapan C .
Pautan Repositori: cpp-addon-nodejs
Rujukan: Node.js
Atas ialah kandungan terperinci C Addons no Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!