Introdução aos Módulos Modernos em JavaScript
Você já trabalhou com módulos via closures. No JavaScript moderno, surgiram módulos mais convenientes, permitindo colocar cada módulo em um arquivo separado, e então, quando necessário, importá-los para outros arquivos, exportando apenas as variáveis e funções necessárias.
Inicialmente, tais módulos não estavam consolidados no padrão JavaScript e eram simplesmente desenvolvidos pela comunidade. Consequentemente, surgiram muitos sistemas de módulos diferentes: AMD, CommonJS, UMD e outros.
Posteriormente, o padrão JavaScript ganhou seus próprios módulos. Eles são chamados de ES módulos. Por causa disso, os módulos desenvolvidos pela comunidade tornaram-se rapidamente obsoletos e não devem ser usados.
Vale a pena prestar atenção apenas nos módulos CommonJS, pois inicialmente eram eles que o NodeJS usava, e ainda hoje ele funciona com eles por padrão para fins de compatibilidade.
Além disso, frequentemente nas instruções de instalação de várias bibliotecas você encontrará a descrição da variante CommonJS, e não da ES. Portanto, você deve ter uma ideia de como converter o código CommonJS para ES.
Há mais uma nuance. Embora os módulos agora estejam consolidados no padrão JavaScript, eles não funcionarão simplesmente assim no navegador (por enquanto). Para isso, é necessário usar uma das ferramentas de build populares.