node-gir는 node.js gobject introspection에 바인딩되어 GI 주석이 설치된 모든 라이브러리에 자동 및 동적 호출을 할 수 있습니다. 여기에는 그놈 프로젝트의 대부분의 라이브러리가 포함됩니다.
이로 인해 GNOME 데스크탑 시스템을 오늘날 시드, GJ 또는 Pygtk로 수행 한 방식으로 전적으로 노드에서 스크립트 할 수 있습니다. 또한 node.js 응용 프로그램에서 그놈 라이브러리를 사용할 수 있습니다. 이를 통해 응용 프로그램의 성능 집약적 인 부분을 Vala로 작성하여 Node.js 및 기타 언어에서 호출 할 수 있습니다.
Gobject introscection 라이브러리를 설치해야합니다. 데비안과 같은 시스템에서 이것은 다음과 같이 처리됩니다.
$ sudo apt-get install libgirepository1.0-dev
그런 다음 다음과 함께 Node-Gir 만 빌드하십시오.
$ npm install gir
Node-Gir 저장소에는 MidGard2 라이브러리를 사용하여 테스트하는 일련의 테스트 세트가 제공됩니다. 설치 한 다음 실행해야합니다.
$ npm test
트래비스는 지속적인 통합에 사용됩니다.
다음 그래프는 모든 부분과 함께 작동하는 방식을 보여줍니다. 유일한 누락 된 부분은 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
사용하십시오..on(name, callback)
사용하여 신호를 첨부하십시오.