NodeJS入門例1-プラグイン(Addons)

6051 ワード

プラグインAddons
プラグインは、リンクされたダイナミックオブジェクトです.cとc++のパッケージ(libraries)を提供できます.APIは複雑で、関連するいくつかのパッケージ(libraries)の知識は以下の通りです.
V 8 JavaScript、C++パッケージ(library).JavaScript呼び出しに使用されるインタフェース:オブジェクトの作成、関数の呼び出しなど.ドキュメントの説明は主にv 8.hファイル(ソースディレクトリdeps/v 8/include/v 8.h)にあります.
libuv,Cイベントドライバパッケージ.ファイルの記述が読み取り可能になるのをいつでも待つか、タイマを待つか、信号を受信するのを待つにはlibuvを呼び出すインタフェースが必要です.つまり、任意のI/O操作でlibyvを呼び出す必要があります.
Node内部パッケージ、特に重要なのは後でよく取得するnode::ObjectWrapクラスです.
その他.deps/他の使用可能なプラグインを表示します.
Node静的コンパイルはすべて実行可能に依存する.モジュールをコンパイルする場合は、これらのパッケージにリンクされていることに注意してください.
次の簡単なプラグインを例に挙げます.
exports.hello = function() { return 'world'; }; //      hello.cc: 
#include <node.h>
#include <v8.h>

       v8;

Handle<Value> Method(const Arguments& args) {
  HandleScope scope;
  return scope.Close(String::New("world"));
}

void init(Handle<Object> target) {
  NODE_SET_METHOD(target, "hello", Method);
}
NODE_MODULE(hello, init)      node              (export an initialization function)。 
void Initialize (Handle<Object> target);
NODE_MODULE(module_name, Initialize)    NODE_MODULE     ,         (   node.h)。 module_name               (  .node  )。 

ソースコードはhelloに構築されています.node、バイナリプラグイン.このため、wscriptというファイルを無鉄砲蛇(python)で作成します.内容は次のとおりです.
srcdir = '.'
blddir = 'build'
VERSION = '0.0.1'

def set_options(opt):
  opt.tool_options('compiler_cxx')

def configure(conf):
  conf.check_tool('compiler_cxx')
  conf.check_tool('node_addon')

def build(bld):
  obj = bld.new_task_gen('cxx', 'shlib', 'node_addon')
  obj.target = 'hello'
  obj.source = 'hello.cc'   node-waf    ,     build/default/hello.node  ,        。 node-waf    WAF     (python)     。node-waf           。 
nodeプロジェクトでこのバイナリプラグインを使用できるようになりました.ハローjsでは、構築を要求するモジュールを示します.var addon = require('./build/Release/hello'); console.log(addon.hello()); // 'world' 。 https://github.com/ry/node_postgres.