Módulos CommonJS
Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 10 de 33.
Boa parte do código Node que você vai ler em pacotes npm e tutoriais mais antigos usa outro sistema de módulos.
CommonJS exporta com module.exports e importa com require. Um arquivo que termina em .cjs é sempre CommonJS, independentemente do restante do projeto, e um import desse tipo de arquivo fornece o objeto module.exports como padrão:
// greet.cjs
function hello(name) {
return 'Hello, ' + name;
}
module.exports = { hello };
// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));exports começa sendo o mesmo objeto que module.exports. exports.hello = hello adiciona uma propriedade a ele; exports = { hello } substitui a variável, e quem importa recebe um objeto vazio.
Desafio
FácilUm arquivo mais antigo, legacy/stats.cjs, foi escrito do jeito CommonJS, com module.exports. Use-o em notes.js para adicionar um comando stats.
- Em
legacy/stats.cjs, terminecountWords(notes). Ele recebe o array de notas e retorna quantas palavras há no total, contando todas as notas. As palavras são separadas por espaços. Para as três notas iniciais,Buy milk,Call AdaeWater the plants, ele retorna7. Para um array vazio, retorna0. - Em
notes.js, importe o arquivo comimport stats from './legacy/stats.cjs'. Ele é um arquivo CommonJS, entãostatsé o objetomodule.exports, e a função éstats.countWords. - Adicione um comando
statsà cadeia, antes doelsefinal. Ele exibe uma linha: o número de notas, depois o número de palavras.3 notes, 7 wordswheree os outros comandos continuam funcionando.
Experimente: digite stats na caixa depois de $ node notes.js e pressione Enter. Você verá 3 notes, 7 words. Depois, digite add Buy bread e, em seguida, stats novamente: você ainda verá 3 notes, 7 words, porque o armazenamento esquece as notas novas quando o programa termina.
Experimente você mesmo
// Um módulo mais antigo, escrito no estilo CommonJS.
function countWords(notes) {
// Retorne o número total de palavras em todas as notas.
return 0;
}
module.exports = { countWords };
Todas as lições de Fundamentos de Node.js
Pratique por conta própria: Playground de Express