Para que serve module.exports no Node.js e como usá-lo corretamente?
Olá a todos! Acabei de começar a estudar Node.js e não consigo entender o que é module.exports e para que serve. Até li a documentação, mas ainda fico confuso.
Digamos que eu tenha um arquivo `math.js`, onde escrevo funções simples para soma e multiplicação:
```javascript
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
```
E em outro arquivo `app.js` quero usar essas funções:
```javascript
console.log(add(2, 3)); // Erro: add is not defined
```
Mas recebo um erro. Entendo que preciso de alguma forma "exportar" as funções, mas não entendo a diferença entre `module.exports` e `exports`, e por que não posso simplesmente usar variáveis globais.
Também vi que alguns escrevem `module.exports = { ... }`, enquanto outros escrevem `exports.functionName = ...`. Qual é a forma correta? E o que acontece se eu escrever `module.exports = function() { ... }`?
Expliquem, por favor, com exemplos simples, como isso funciona e quando usar cada forma.