Whereas modules are the JavaScript extensions for Node, add-ons are the C/C++ extensions. Add-ons frequently wrap existing system libraries and expose their functionality to Node. They can, of course, create new functionality too, although most people choose to do that in JavaScript for obvious reasons. Add-ons are dynamically linked shared objects.
To create an add-on, youâll need at least two sets of files: the
add-on code and the build files. Node uses the waf
build system written in Python. Letâs start
with a âHello Worldâ example. Example 8-2 is equivalent
to exports.hello = "world";
in
JavaScript.
Example 8-2. A simple add-on for Node
#include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); }
The first thing this code needs to do is include the v8
header file because Node is built on top of
V8. This provides a lot of standard objects that we will use. Next, we
declare the namespace. Then we create the wrapper,
which is required by all add-ons. The wrapper functions like the exports
global variable for JavaScript modules.
Weâll hang everything we expose from the add-on off a function with the signature extern
'C' void init (Handle<Object> target)
.
Get Node: Up and Running now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.