!CHAPTER Modules
!SUBSECTION CommonJS Modules
Unfortunately, the JavaScript libraries are just in the process of being
standardized. CommonJS has defined some important modules. ArangoDB implements
the following
- "console" is a well known logging facility to all the JavaScript developers.
ArangoDB implements all of the functions described
here, with the exceptions
of `profile` and `count`.
- "fs" provides a file system API for the manipulation of paths, directories,
files, links, and the construction of file streams. ArangoDB implements
most of Filesystem/A functions described
here.
- Modules are implemented according to
Modules/1.1.1
- Packages are implemented according to
Packages/1.0
!SUBSECTION ArangoDB Specific Modules
A lot of the modules, however, are ArangoDB specific. These modules
are described in the following chapters.
!SUBSECTION Node Modules
ArangoDB also support some node modules.
- "assert" implements
assertion and testing functions.
- "buffer" implements
a binary data type for JavaScript.
- "path" implements
functions dealing with filenames and paths.
- "punycode" implements
conversion functions for
punycode encoding.
- "querystring"
provides utilities for dealing with query strings.
- "stream"
provides a streaming interface.
- "url"
has utilities for URL resolution and parsing.
!SUBSECTION Node Packages
The following node packages are preinstalled.
- "buster-format"
- "Cheerio.JS"
- "coffee-script" implements a
coffee-script to JavaScript compiler. ArangoDB supports the `compile`
function of the package, but not the `eval` functions.
- "htmlparser2"
- "Sinon.JS"
- "underscore" is a utility-belt library
for JavaScript that provides a lot of the functional programming support that
you would expect in Prototype.js (or Ruby), but without extending any of the
built-in JavaScript objects.
!SUBSECTION require
´require(path)´
*require* checks if the module or package specified by *path* has already
been loaded. If not, the content of the file is executed in a new
context. Within the context you can use the global variable `exports` in
order to export variables and functions. This variable is returned by
*require*.
Assume that your module file is `test1.js` and contains
exports.func1 = function() {
print("1");
};
exports.const1 = 1;
Then you can use @FN{require} to load the file and access the exports.
unix> ./arangosh
arangosh> var test1 = require("test1");
arangosh> test1.const1;
1
arangosh> test1.func1();
1
*require* follows the specification
[Modules/1.1.1](http://wiki.commonjs.org/wiki/Modules/1.1.1).