Existen distintos formatos ya que JavaScript originalmente no incluía el concepto de modulos.
Asynchronous Module Definition (AMD)
Es usado por los navegadores.
Utiliza define
como palabra reservada.
// suma.js
define(function() {
return suma = function(r) {
return r + r;
}
});
// index.js
define(function(require) {
require('./suma');
suma(4); // = 8
}
CommonJS (CJS)
Se usa en npm y Node.js.
Utiliza require
y module.exports
para definir las dependencias de los modulos.
// utils.js
function suma(r){
return r + r;
}
exports.suma = suma;
// index.js
var utils = require('./utils.js');
utils.suma(4); // = 8
ES Module (ESM).
Es parte del lenguaje nativo a partir de ECMAScript 6.
Utiliza import
y export
para definir las dependencias de los modulos.
La keyword System.register
se diseño para dar soporte a los modulos en ECMAScript 5.
// suma.js
export function suma(r) {
return r + r;
}
// index.js
import suma from "./suma";
suma(4); // = 8
Universal Module Definition (UMD)
Se puede usar en el navegador y en Node.js.
https://github.com/umdjs/umd/tree/master/templates