扩展是动态链接的共享对象,可以与C 和C++ 库链合。目前API 是相当复杂,涉及数个库的知识:
Node 静态编译所有组件成可执行文件。当您编译您的模块时,您不必考虑以上库的连结。 制作一个小型扩展能达到以下效用(C++ 除外):
exports.hello = 'world'; 创建文件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"));
}
此源文件需要编译成hello.node(二进制扩展)。需要创建一个 python 文件wscript:
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 configure build 将会创建您的扩展文件至build/default/hello.node。 node-waf 是http://code.google.com/p/waf/[WAF],基於python 的编译系统。node-waf 为使用者提供轻易。 所有Node 扩展必须输出一函数init ,并包含此声明: extern 'C' void init (Handle