Node.js v0.5.6 Manual & Documentation


Table Of Contents


Addons

Addons are dynamically linked shared objects. They can provide glue to C and C++ libraries. The API (at the moment) is rather complex, involving knowledge of several libraries:

Node statically compiles all its dependencies into the executable. When compiling your module, you don't need to worry about linking to any of these libraries.

To get started let's make a small Addon which does the following except in C++:

exports.hello = 'world';

To get started we create a file hello.cc:

#include <v8.h>

using namespace v8;

extern "C" void

init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); }

This source code needs to be built into hello.node, the binary Addon. To do this we create a file called wscript which is python code and looks like this:

srcdir = '.'

blddir = 'build' VERSION = '0.0.1'

def set_options(opt):

opt.tooloptions('compilercxx')

def configure(conf):

conf.checktool('compilercxx') conf.checktool('nodeaddon')

def build(bld):

obj = bld.newtaskgen('cxx', 'shlib', 'node_addon') obj.target = 'hello' obj.source = 'hello.cc'

Running node-waf configure build will create a file build/default/hello.node which is our Addon.

node-waf is just WAF, the python-based build system. node-waf is provided for the ease of users.

All Node addons must export a function called init with this signature:

extern 'C' void init (Handle<Object> target)

For the moment, that is all the documentation on addons. Please see https://github.com/ry/node_postgres for a real example.