Módulos CommonJS

Os padrão de módulos CommonJS foi (e ainda é) utilizado pela plataforma Node.js (usada no back-end), portanto ainda é bastante comum a sua utilização em projetos com JavaScript, uma vez que o padrão ES6 é relativamente novo, sendo lançado em 2015.

// index.js
const calculadora = require("./modulo1.js");
const { VERSAO, mensagem } = require("./modulo2.js");

console.log("Versão do módulo:", VERSAO);
console.log("2+3", calculadora.somar(2, 3));
console.log("3-2", calculadora.subtrair(3, 2));
mensagem();
// modulo1.js
module.exports = {
  somar(a, b) {
    return a + b;
  },
  subtrair(a, b) {
    return a - b;
  }
};
// modulo2.js
exports.VERSAO = "1.0";

exports.mensagem = function(){
  console.log("Olá! Tudo bem?");
}

Módulos ES6

O sistema de módulos introduzido com o ECMAScript 2015 (ES6) possibilita programação modular em arquivos JavaScript com o uso das diretivas import e export, sem a necessidade de vincular todos os arquivos de script no documento HTML.

Para que um arquivo JavaScript seja carregado como módulo, é necessário adicionar o atributo type="module" à tag <script> no documento HTML.

Mais informações sobre o funcionamento dos módulos disponíveis em https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Modules.

<!-- index.html -->
<script type="module" src="script.js"></script>
// script.js
import calculadora, { VERSAO, mensagem } from "./modulo.js";

console.log("Versão do módulo:", VERSAO);
console.log("2+3", calculadora.somar(2, 3));
console.log("3-2", calculadora.subtrair(3, 2));
mensagem();
// modulo.js
export const VERSAO = "1.0";

export function mensagem(){
  alert("Olá! Tudo bem?");
}

export default {
  somar(a, b) {
    return a + b;
  },
  subtrair(a, b) {
    return a - b;
  }
};