Node-GIR هي Node.js Bindings لتأمل GoBject مما يجعل من الممكن إجراء مكالمات تلقائية وديناميكية إلى أي مكتبة مثبتة على GI. وهذا يشمل معظم المكتبات من مشروع جنوم.
سيجعل هذا من الممكن نص نظام سطح المكتب Gnome بالكامل من العقدة كثيرًا بالطريقة التي يتم بها اليوم مع البذور أو GJS أو PYGTK. كما يسمح باستخدام مكتبات جنوم في تطبيقات node.js. مع ذلك ، يمكنك أيضًا كتابة الأجزاء المكثفة للأداء في تطبيقاتك في Vala والاتصال بها من Node.js ولغات أخرى.
تحتاج إلى تثبيت مكتبة GoBject Offection. على نظام يشبه دبيان ، سيتم التعامل مع هذا من قبل:
$ sudo apt-get install libgirepository1.0-dev
ثم فقط بناء عقدة مع:
$ npm install gir
يأتي مستودع Node-GIR مع مجموعة من الاختبارات التي تستخدم مكتبة Midgard2 للاختبار ضدها. تحتاج أيضًا إلى تثبيت ، ثم تشغيل:
$ npm test
يستخدم Travis للتكامل المستمر:
يوضح الرسم البياني التالي جميع الأجزاء وكيفية عملها معًا. الجزء الوحيد المفقود هو روابط العقدة إلى libgirepository. وبالتالي هذا المشروع.
BUILD TIME:
+-----------------------------------------------------------+
| foo.c |
| foo.h |
| |
| Library sources, with type annotations |
+-----------------------------------------------------------+
| |
gcc g-ir-scanner
| |
| V
| +------------------------+
| | Foo.gir |
| | |
| | <GI-name>.gir |
| | |
| | XML file |
| | |
| | Invocation information |
| | Required .gir files |
| | API docs |
| | |
| +------------------------+
| |
| g-ir-compiler
| |
DEPLOYMENT TIME: |
| |
V V
+-----------------------------+ +---------------------------+
| libfoo.so | | Foo.typelib |
| | | |
| | | Binary version of the |
| ELF file | | invocation info and |
| | | required .typelib files |
| Machine code, plus | +---------------------------+
| dynamic linkage information | A
| (DWARF debug data, etc) | |
+-----------------------------+ |
A |
| +---------------------------+
| | libgirepository.so |
+-----------+ | |
| libffi.so | | Can read typelibs and |
| | | present them in a |
+-----------+ | libffi-based way |
A | |
| +---------------------------+
| A
| |
| +------------+
+--------------------------| node-gir |
| |
+--------->+------------+
|
+------------------+
| NodeJS |
+------------------+
لأنها لطيفة ، ولكن ليس ما أبحث عنه. تحظى العقدة بشعبية كبيرة وسيكون من الجيد أن تكون قادرًا على استخدامها لأدوات وتطبيقات سطح المكتب.
فيما يلي بعض الروابط والملاحظات وأنا أحاول معرفة كيفية القيام بذلك.
ستذهب بعض هذه الأفكار في هذا الربط وسيذهب البعض في أغلفة لطيفة تستخدمها. سأعرف المزيد مع تقدمنا.
camelCase
للطرق التي لا بد أن تبدو JavaScripty..on(name, callback)
لإرفاق الإشارات.