ملاحظة: يرجى ترقية العقدة 6.2.1 أولاً. يعد أمر ترقية العقدة npm install -gn ؛ n stable.node.js امتداد مكتبة ارتباط ديناميكية مكتوبة في c/c ++ وتم تحميلها من خلال وظيفة node.js المتطلبات (). إنه مثل استخدام وحدة Node.js العادية. يوفر بشكل أساسي واجهات بين مكتبات العقدة و C/C ++.
وبهذه الطريقة ، إذا تم تنفيذ طريقة أو وظيفة من خلال تمديد العقدة ، فإنها تصبح معقدة للغاية ، تتضمن معرفة عدة وحدات وواجهات:
• V8: يوفر javaScript.v8 الذي ينفذ التنفيذ من خلال مكتبة C ++ آلية إنشاء كائن ، وظيفة رد الاتصال ، وما إلى ذلك. معظم مستندات V8API موجودة في ملف V8.H. انقر على مستند V8 عبر الإنترنت الخاص بي
• libuv: مكتبة لحلقات الأحداث التي تنفذ مؤشرات ترابط العمال node.js والسلوك غير المتزامن. كما أنه يعمل كمكتبة مجردة منصة يمكن ببساطة الوصول إلى أنظمة أنظمة التشغيل الرئيسية التي تشبه إلى جميع أنظمة أنظمة التشغيل الرئيسية ، العديد من المهام الشائعة ، مثل التفاعل مع أنظمة الملفات والمآخذ والوقت وأحداث النظام. يوفر Libuv أيضًا خيطًا يشبه Pthreads التجريدي والذي يمكن استخدامه للاختلاف أكثر تعقيدًا. يحتاج ملحق Node.js 'C/C ++ إلى تجاوز حلقة الحدث القياسية. يشجع المؤلف المكون الإضافي التفكير في كيفية تجنب حظر حلقات الإدخال/الإخراج وإكمال العمل المكثف للمهمة من خلال عمليات نظام LIBUV غير الحظر ، ومواضيع العمال ، وموضوعات الموضوعات المعرفة من قبل المستخدم.
• Node.js مكتبة مدمجة: Node.js نفسها تستخدم عددًا كبيرًا من واجهات برمجة تطبيقات امتداد C/C ++. فئة أهم لعقدة امتداد C/C ++: ObjectWrap
• مكتبات الارتباطات الثابتة العديدة الخاصة بـ Node.js ، مثل OpenSSL: Node.js الأخرى المكتبات في دليل DEPS ضمن شجرة الدليل المصدر. للحصول على التفاصيل ، يرجى الاطلاع على تبعيات Node.js الخاصة للحصول على معلومات إضافية. انقر على مثال مكتبة امتداد Node.js الرسمي ، والذي قد يكون نقطة الانطلاق لك لكتابة مكتبة تمديد C/C ++ لـ Node.js. غالبًا ما يتم استخدام فئات V8 و OpenSSL بشكل متكرر في ملحقات العقدة C/C ++.
عقدة C/C ++ امتداد أول قنبلة - أحدث مثال على World
ينطبق هذا المثال على رقم الإصدار Node.js V5.0 أو أعلى.
// hello.jsconst addon = require ('./ build/relect/addon') ؛ console.log (addon.hello ()) ؛ // 'World' // hello.cc#include <node.h> #include <v8.h> namepace demo {use v8 :: functionCallbackInfo ؛ use v8 :: exolt args.getisolate () ؛ args.getReturnValue (). set (String :: NewFromutf8 (exold ، "World") ؛} void init (abome> local> orports) {node_set_method (orders ، "hello" ، method) ؛} node_module (addon ، init) [{"Target_Name": "Addon" ، "Sources": ["Hello.cc"]}]}أمر Node-GYP
نسخة الكود كما يلي:
Node-GYP تكوين بناء
ما سبق هو المعرفة ذات الصلة بترجمة Node.js Addons (امتداد C/C ++) المقدمة لك من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!