erlang_js
is a linked-in driver, API, and OTP application that
embeds Mozilla’s Spidermonkey Javascript Virtual Machine in
Erlang. Originally created to facilitate usage of Riak’s MapReduce
by non-Erlang programmers, it supports multiple concurrent
Javascript VMs, runtime evaluation of Javascript code, and
invocation of Javascript functions.
erlang_js
uses Jiffy JSON Parser for
JSON encoding/decoding.
erlang_js
builds and executes only on Unix-based platforms,
including Linux, Mac OS/X, and Solaris (version with Spidermonkey 1.8.5 was tested on OS/X and Centos 6.3/6.5). More information about the features available to Javascript
inside erlang_js
are detailed on the Mozilla Developer Center.
You must have Erlang/OTP R13B04 or later and a GNU-style build
system to compile and run erlang_js
.
git clone git://github.com/systra/erlang_js.git
make all test
Start up an Erlang shell with the path to erlang_js
included.
erl -pa ebin -pa deps/*/ebin -boot start_sasl
or using Make target
make run
Start the erlang_js
application and create a Javascript VM.
1> application:start(erlang_js).
=PROGRESS REPORT==== 15-Oct-2012::22:09:39 ===
supervisor: {local,erlang_js_sup}
started: [{pid,<0.51.0>},
{name,cache},
{mfargs,{js_cache,start_link,[]}},
{restart_type,permanent},
{shutdown,2000},
{child_type,worker}]
=PROGRESS REPORT==== 15-Oct-2012::22:09:39 ===
application: erlang_js
started_at: nonode@nohost
ok
2> {ok, JS} = js_driver:new().
{ok,#Port<0.879>}
Now you can evaluate Javascript expressions and call Javascript functions.
3> js:define(JS, <<"var addOne = function(a){ return a + 1; }">>).
ok
4> js:call(JS, <<"addOne">>, [3]).
{ok,4}
Documentation about the API is extensive and can be generated by
edoc
.
$ make docs
$ open docs/index.html
Coderwall ::