Menu
CoddyTech

Módulos CommonJS

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 10 de 33.

Gran parte del código de Node que leerás en paquetes de npm y tutoriales antiguos usa otro sistema de módulos.

CommonJS exporta con module.exports e importa con require. Un archivo que termina en .cjs siempre es CommonJS, independientemente de lo que use el resto del proyecto, y al importar un archivo así con import, obtienes su objeto module.exports como valor predeterminado:

// greet.cjs
function hello(name) {
    return 'Hello, ' + name;
}
module.exports = { hello };

// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));

exports empieza siendo el mismo objeto que module.exports. exports.hello = hello lo amplía; exports = { hello } reemplaza la variable, y quien importa obtiene un objeto vacío.

challenge icon

Desafío

Fácil

Un archivo más antiguo, legacy/stats.cjs, está escrito al estilo de CommonJS, con module.exports. Úsalo desde tu notes.js para añadir un comando stats.

  1. En legacy/stats.cjs, termina countWords(notes). Recibe el arreglo de notas y devuelve cuántas palabras contienen en total, contando todas las notas. Las palabras están separadas por espacios. Para las tres notas iniciales, Buy milk, Call Ada y Water the plants, devuelve 7. Para un arreglo vacío, devuelve 0.
  2. En notes.js, importa el archivo con import stats from './legacy/stats.cjs'. Es un archivo CommonJS, así que stats es su objeto module.exports, y la función es stats.countWords.
  3. Añade un comando stats a la cadena, antes del else final. Imprime una línea: la cantidad de notas y después la cantidad de palabras.
    3 notes, 7 words
    where y los demás comandos siguen funcionando.

Pruébalo: escribe stats en el cuadro después de $ node notes.js y pulsa Intro. Verás 3 notes, 7 words. Después, escribe add Buy bread y luego stats otra vez: seguirás viendo 3 notes, 7 words, porque el almacén olvida las notas nuevas cuando termina el programa.

Pruébalo tú mismo

// Un módulo antiguo, escrito al estilo CommonJS.
function countWords(notes) {
    // Devuelve el número total de palabras que contienen todas las notas.
    return 0;
}

module.exports = { countWords };

Todas las lecciones de Conceptos básicos de Node.js

Practica por tu cuenta: Playground de Express