Skip to content

Latest commit

 

History

History

06-modules

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
type duration
read
6min

Modularidad

Paradigmas - Modularidad

Una de las consecuencias de estos cambios es el concepto de "modularidad". Esto va a permitir que empecemos a escribir programas estructurados en módulos independientes, que son más fáciles de entender, testear, mantener, ...

En JavaScript existen varios sistemas de módulos, principalmente AMD, Common JS y ES2015/ES6. Para este ejemplo vamos a concentrarnos en Common JS, que es el que usa Node.js, y que también podemos usar en el navegador gracias a los bundlers. En nuestro ejemplo, ahora que nuestro código vive dentro de una función, podríamos exportar la función, lo que nos permitiría usar esta función desde otros scripts u otros programas. Esto es esencial para casi cuaquier programa o script hoy en día, con consecuencias que damos por sentado como poder organizar nuestro código en archivos y carpetas diferentes o tener dependecias de módulos externos.

Para exportar nuestra función getIds usando Common JS en Node.js, podemos simplemente asignar nuestra función a module.exports.

// al final del script
module.exports = getIds;

El objeto module es una variable local a cada script en Common JS. Si asignamos algo a module.exports, éste será el valor que recibiremos cuando requiramos nuestro "módulo". Por ejemplo, imaginemos que salvamos el script en el archivo src/getIds.js, y ahora lo queremos usar desde otro script afuera de src/:

const getIds = require('./src/getIds');
// `getIds` tiene el valor que hemos exportado a través de `module.exports`
// en el script `src/getIds.js`

Common JS también nos ofrece la opción de exportar los valores que queramos como propiedades del objeto exports (que es un alias de module.exports). Así en vez de exportar sólo un valor (la función getids), podemos exporar varios valores.

exports.getIds = getIds;
exports.hasId = hasId;

Ahora cuando requerimos nuestro módulo desde otro script lo que recibimos es un objeto (el objeto exports), que tiene dos propiedades, getIds y hasId.

const myModule = require('./src/myModule');
// myModule.getIds()
// myModule.hasId()

Referencias

Blog posts: