Node-Gir ist Node.js-Bindungen an die Introspektion von Gobject Inospection, sodass automatische und dynamische Aufrufe für jede Bibliothek mit GI-Annotationen installiert werden können. Dies schließt die meisten Bibliotheken aus dem GNOME -Projekt ein.
Dies ermöglicht es, ein GNOME -Desktop -System aus dem Knoten zu schriftigen, so viel wie es heute mit Samen, GJS oder PyGTK gemacht wird. Es ermöglicht auch die Verwendung von GNOME -Bibliotheken in Node.js -Anwendungen. Damit können Sie auch die leistungsintensiven Teile Ihrer Anwendungen in Vala schreiben und sie von node.js und anderen Sprachen anrufen.
Sie müssen eine Gobject Inospectection Library installieren. Auf einem debianähnlichen System würde dies behandelt werden von:
$ sudo apt-get install libgirepository1.0-dev
Dann bauen Sie einfach einen Knotengir mit:
$ npm install gir
Das Node-Gir-Repository verfügt über eine Reihe von Tests, die die Midgard2-Bibliothek zum Testen verwenden. Sie brauchen auch das installiert und dann ausführen:
$ npm test
Travis wird für die kontinuierliche Integration verwendet:
Die folgende Grafik zeigt alle Teile und wie sie zusammenarbeiten. Der einzige fehlende Teil sind Knotenbindungen an libgirepository. Daher dieses Projekt.
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 |
+------------------+
Weil sie nett sind, aber nicht das, wonach ich suche. Der Knoten ist sehr beliebt und es wäre schön, ihn für Desktop -Tools und -Anwendungen zu verwenden.
Hier sind einige Links und Notizen, während ich versuche herauszufinden, wie das geht.
Einige dieser Ideen werden in dieser Bindung und andere in nette Wrapper gehen, die sie verwenden. Ich werde mehr wissen, während wir Fortschritte machen.
camelCase
für Methoden, die Javascripty aussehen..on(name, callback)
um Signale anzuhängen.