Como importar e exportar módulos no Node.js?
O Node.js permite dividir o código em módulos reutilizáveis. Para importar e exportar módulos, podemos usar CommonJS (require/module.exports) ou ES Modules (import/export).
Exportando módulos com CommonJS
A forma mais tradicional de exportar um módulo é usando module.exports. Exemplo:
Criando um módulo calculadora.js:
function somar(a, b) {
return a + b;
}
function subtrair(a, b) {
return a - b;
}
module.exports = { somar, subtrair };
Aqui, estamos exportando um objeto com duas funções.
Importando um módulo com CommonJS
Agora, podemos importar o módulo calculadora.js em outro arquivo:
const calculadora = require('./calculadora');
console.log(calculadora.somar(5, 3));
Neste exemplo, usamos require para importar o módulo e acessar suas funções.
Exportando módulos com ES Modules
O ES Modules usa a sintaxe export para exportar funções ou classes:
export function multiplicar(a, b) {
return a * b;
}
export function dividir(a, b) {
return a / b;
}
Ou podemos exportar tudo de uma vez:
const raizQuadrada = (num) => Math.sqrt(num);
export default raizQuadrada;
Importando módulos com ES Modules
No arquivo onde queremos usar essas funções, importamos com import:
import { multiplicar, dividir } from './math.js';
console.log(multiplicar(4, 2));
Se o módulo tiver uma exportação padrão (export default), importamos assim:
import raizQuadrada from './math.js';
console.log(raizQuadrada(16));
Quando usar CommonJS ou ES Modules?
- CommonJS (
require): É o padrão no Node.js até a versão 12 e ainda é amplamente usado. - ES Modules (
import/export): Recomendado para novos projetos e compatível com a maioria dos frameworks modernos.
Conclusão
O Node.js suporta tanto CommonJS quanto ES Modules. Se estiver trabalhando com código legado ou pacotes npm, require/module.exports pode ser a melhor opção. Para projetos modernos, prefira import/export para uma sintaxe mais limpa e compatível com o JavaScript moderno.
Por que a modularização é essencial no desenvolvimento moderno?
O conceito de módulos existe há muito tempo, mas no JavaScript ganhou força com a evolução da linguagem e a adoção do Node.js.
Antes dos módulos, os projetos eram monolíticos, com arquivos enormes e difíceis de manter. Com a modularização, o código se tornou mais organizado, reutilizável e escalável.
Hoje, tanto CommonJS quanto ES Modules são amplamente utilizados. Enquanto o require ainda domina em projetos antigos, import/export se tornou o padrão para aplicações modernas, principalmente no desenvolvimento full-stack com frameworks como React e Next.js.
Algumas aplicações:
- Organização e reutilização de código
- Facilidade na manutenção de projetos
- Importação de pacotes e bibliotecas externas
- Melhoria na legibilidade do código
- Compatibilidade com padrões modernos de desenvolvimento
Dicas para quem está começando
- Prefira
import/exportpara projetos modernos, pois é compatível com JavaScript ES6. - Use
module.exportsse estiver lidando com pacotes npm ou código legado. - Sempre nomeie seus módulos de forma intuitiva para facilitar a leitura.
- Se estiver recebendo erros ao usar ES Modules, adicione
"type": "module"nopackage.json. - Evite misturar
requireeimportno mesmo projeto para manter a consistência.
Lucas Fernandes
Desenvolvedor backend especializado em Node.js e sistemas distribuídos.
Mais sobre o autor