Empecé a trabajar en un proyecto existente basado en Node.js. Solo estaba tratando de entender el flujo de ejecución, donde me encontré con algunos archivos *.mjs
. He buscado en la web donde encontré que estos son archivos JS basados en módulos.
Quiero saber en qué se diferencia de los archivos *.js
(¿en qué se beneficia)?
Indica un archivo de módulo ES6.
El sistema de módulos original de Node.js es CommonJs (que usa require
y module.exports
).
Desde que se creó Node.js, el sistema de módulos ECMAScript (que usa import
y export
) se ha vuelto estándar y Node.js ha agregado soporte para él.
Node.js tratará los archivos .cjs
como módulos .mjs
como módulos ECMAScript. Tratará los archivos .js
como cualquiera que sea el sistema de módulo predeterminado para el proyecto (que es CommonJS a menos que package.json diga "type": "module",
).
Ver también: Diferencias entre el sistema de módulos ES6 y CommonJs
Archivo .MJS
- mjs una extensión para módulos EcmaScript
- Un archivo MJS es un archivo de código fuente que contiene un módulo ES (módulo ECMAScript) para usar con una aplicación Node.js.
Los archivos MJS están escritos en JavaScript y también pueden usar la extensión .JS fuera del contexto de Node.js.
Los módulos ES permiten a los desarrolladores web y de aplicaciones organizar el código en componentes reutilizables más pequeños.
ECMAScript 6 (ES6) introdujo la especificación para Módulos ES, proporcionando un estándar para implementar módulos en JavaScript. A partir de 2018, todos los principales navegadores web son compatibles con los módulos ES.
Sin embargo, la popularidad de JavaScript modularizado es anterior a ES6. Node.js, un entorno de tiempo de ejecución de JavaScript, utilizó CommonJS como especificación para los módulos. Debido a que tantas aplicaciones existentes se crearon con CommonJS, cuando Node.js agregó soporte para módulos ES nativos, introdujo de manera controvertida la extensión de archivo MJS para diferenciar los dos y evitar que las aplicaciones se rompan.
NOTA: Algunos desarrolladores se refieren informalmente a los archivos MJS como archivos "Michael Jackson Script".
Para mayor claridad . En cuanto a los desarrolladores/humanos, es fácil distinguir entre un archivo de módulo (.mjs) y un archivo javascript normal (.js)... porque no siempre es fácil de determinar incluso si examina el código en el archivo.
También hay beneficios de rendimiento que le dan más razones para considerar usarlo. V8 (motor de JavaScript que impulsa Google Chrome) recomienda el uso de .mjs, pero aún depende de su situación. Si desea conocer más de sus ventajas, consulte https://v8.dev/features/modules#mjs