No âmbito do NodeJS, analise o código a seguir. exports.xpto = function () { return Date(); }; Esse código, gravado num arquivo .js, permite disponibilizar a função xpto em outras aplicações por meio da função:
- A)import();
`import()` é usado no sistema de módulos ECMAScript e não é a função tradicional de carregamento mostrada no padrão CommonJS do enunciado.
- B)include();
`include()` não é uma função padrão do NodeJS para importar módulos.
- C)library();
`library()` não existe como mecanismo nativo do NodeJS para disponibilizar módulos.
- D)module();
`module()` não é a função usada para importar o arquivo e acessar o que foi exportado.
- E)require().
`require()` é a função correta para carregar o módulo e acessar a função exportada por `exports.xpto`.
Gabarito: E
No NodeJS, cada arquivo JavaScript funciona como um módulo. Para compartilhar algo com outros arquivos, você expõe essa parte usando a API de módulos, normalmente com `exports` ou `module.exports`. No código da questão, a linha `exports.xpto = function () { ... }` está colocando a função `xpto` na lista do que o módulo exporta. É como deixar a porta aberta só para esse item específico sair do arquivo e ser usado por outro código. Para acessar esse módulo em outra aplicação ou em outro arquivo, você usa `require()`. Essa função carrega o módulo e devolve o objeto exportado, permitindo chamar `xpto`. Exemplo mental simples: `const meuModulo = require('./arquivo'); meuModulo.xpto();`. As outras alternativas não batem com o mecanismo do NodeJS. `import()` é do sistema de módulos ECMAScript e não é a resposta esperada para esse padrão clássico mostrado no enunciado. `include()`, `library()` e `module()` não são funções padrão do NodeJS para esse fim. Então, o gabarito é a letra E, porque `require()` é a forma tradicional de importar um módulo no NodeJS e acessar o que foi colocado em `exports`. Em termos doutrinários, isso reflete o modelo CommonJS, historicamente adotado pelo NodeJS para modularização de código.