About
CommonJs 1) 2) is a Module format definition
They have defined:
The CommonJS module proposal specifies a simple API for declaring modules server-side (and unlike AMD) attempts to cover the server side with io, filesystem, promises and more. Due to its history and implementation 3) , using CommonJS modules in the most common of JS environments, the browser, is non-optimal today.
The commonJS format is the default format used by Node.js. Therefore a CommonJS module will run on node.
Syntax
The CommonJS (CJS) list participants 4) have worked out the module format.
The CJS mechanisms contain two primary parts:
- export: a variable named exports that contains the public API
- import: a require function that load the module and return the exports variable.
A CJS module does not use any function wrappers such as the AMD define to specify an id or dependencies.
- The module id is the path or module name via a search path
- The dependencies are declared via the require function.
require
Import is done via the require function
// require will import code from another module
var MyDependency = require('my-dependency');
Export
The module exposes its public api via the exports property
// module.exports will make its property public
exports = ...;
Loader
Server
Browser
There is not so much adoption of CJS in the browser because:
- many CommonJS APIs address server-oriented features that could not be implement in a browser (for example, io, system and js)
- amd defines already a require function (bringing conflict and confusion)
There was loader but most of them are now no more supported
- curl.js (discontinued 8 years ago - 2014)