O que é um Módulo em JavaScript e Como Você Pode Importar e Exportar Módulos no Seu Programa?

Em JavaScript, um módulo é uma unidade de código autocontida que encapsula funções, classes ou variáveis relacionadas. Pense em um módulo como um bloco de construção para sua aplicação, assim como um capítulo em um livro. Cada módulo foca em uma funcionalidade específica, tornando seu código mais organizado, sustentável e reutilizável. Módulos ajudam a evitar conflitos de nomes e permitem que você estruture sua aplicação em partes separadas e interconectadas. O conceito de módulos em JavaScript evoluiu ao longo do tempo, mas a abordagem mais amplamente usada e suportada é o sistema de módulos ES6 (ECMAScript 2015). Este sistema fornece uma maneira padronizada de definir e usar módulos em diferentes ambientes JavaScript. Para criar um módulo, você escreve seu código JavaScript em um arquivo separado. Quaisquer variáveis, funções e classes que você deseja tornar disponíveis para outras partes da sua aplicação precisam ser explicitamente exportadas. Você pode fazer isso usando a palavra-chave export. Por exemplo, digamos que você tenha um arquivo chamado math.js com algumas funções matemáticas:
export function add(a, b) {
    return a + b;
}

export function subtract(a, b) {
    return a - b;
}

const PI = 3.14159;
export { PI };
Neste exemplo, estamos exportando duas funções (add e subtract) e uma constante (PI). Você pode exportar quantos itens precisar de um único módulo. Para usar esses itens exportados em outra parte da sua aplicação, você precisa importá-los. Isso é feito usando a palavra-chave import. Vamos supor que você queira usar essas funções matemáticas em um arquivo chamado app.js:
import { add, subtract, PI } from './math.js';

console.log(add(5, 3));        // Outputs: 8
console.log(subtract(10, 4));  // Outputs: 6
console.log(PI);               // Outputs: 3.14159
Aqui, estamos importando as funções específicas e a constante que precisamos do módulo math.js. A parte './math.js' indica ao JavaScript onde encontrar o arquivo do módulo em relação ao arquivo atual. Às vezes, você pode querer importar tudo o que um módulo exporta. Você pode fazer isso usando a sintaxe do asterisco (*):
import * as Math from './math.js';

console.log(Math.add(5, 3));        // Outputs: 8
console.log(Math.subtract(10, 4));  // Outputs: 6
console.log(Math.PI);               // Outputs: 3.14159
Neste caso, todas as exportações de math.js são importadas como propriedades de um objeto chamado Math. Outro padrão comum é ter um export padrão em um módulo. Isso é tipicamente usado quando um módulo exporta principalmente uma única função. Você pode ter apenas uma exportação padrão por módulo. Aqui está como fica:
// In math.js
export default function multiply(a, b) {
    return a * b;
}

// In app.js
import multiply from './math.js';

console.log(multiply(4, 5));  // Outputs: 20
Observe que ao importar uma exportação padrão, você não precisa usar chaves e pode nomear a importação como quiser. É importante notar que para usar módulos ES6 no navegador, você precisa especificar o type como module na sua tag script:
<script type="module" src="app.js"></script>
Módulos fornecem uma maneira poderosa de organizar e estruturar seu código JavaScript. Eles permitem que você divida sua aplicação em partes menores e gerenciáveis, promovem a reutilização de código e ajudam a manter uma separação clara de responsabilidades. À medida que você desenvolve aplicações maiores, perceberá que os módulos se tornam uma ferramenta essencial no seu conjunto de ferramentas de desenvolvimento JavaScript.
Este módulo não possui perguntas. Marque como concluído.