これらは、JavaScript 環境で C コードを直接拡張し、Node.js コードのパフォーマンスと機能を向上させる方法です。言い換えれば、C アドオンは Node.js 用に作成するモジュールであり、これを使用すると、C 関数とライブラリを作成し、JavaScript コードで使用できるようになります。
これらは基本的に JavaScript と C の間のブリッジです。つまり、Node.js は柔軟性と、何よりもそのシンプルさを失うことなく、より重いコードを実行できます。
まず、コード用のディレクトリを作成しましょう
mkdir addon cd addon
次に、package.json を作成して初期化し、ライブラリ node-gyp をダウンロードしましょう (依存関係が OS に正しくインストールされていることを確認してください)
npm init -y npm i node-gyp
package.json 内で、アドオンのビルド スクリプトを作成します。
mkdir addon cd addon
次に、C でアドオンを作成し、バインディングを構成します。
npm init -y npm i node-gyp
"scripts": { "build": "node-gyp configure build" }
準備完了。これら 2 つのファイルが作成されたら、ビルド スクリプト (npm run build) を実行し、プロセス全体がアドオンを利用できるようになるまで待ちます。次に、新しいファイルを作成し、ターミナルでコマンド node Index.js
を実行します。
// 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) }
重要な操作のパフォーマンスを最適化することや、ネイティブ コードと統合することが目的の場合、アドオンは強力なリソースです。これらは C の知識を必要とし、プロジェクトの複雑性を高めますが、純粋な JavaScript では理想的なソリューションが提供できない状況では完璧なソリューションとなる可能性があります。 N-API などのツールのおかげで、アドオン開発はよりアクセスしやすく安定しており、プロジェクトで JavaScript の実用性と C の効率性を組み合わせることができます。
リポジトリ リンク: cpp-addon-nodejs
参考文献: Node.js
以上がC アドオンの Node.jsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。