commonjs
Resumo: exigir um arquivo é executar o arquivo de forma síncrona. Quando o arquivo for executado, o valor de exportação do arquivo será armazenado em cache. Ao acessá-lo novamente na próxima vez, você só precisa remover o cache e não há necessidade de execute o arquivo duas vezes.
esm
esm exporta o endereço de memória, quando outros arquivos forem importados, ele apontará para o mesmo endereço
valor de exportação pode ser modificado
Como evitar ser modificado
- Se for apenas uma camada de objetos, use
- Se houver objetos aninhados, cada objeto precisa ser recursivamente Object.freeze