Como título. Dado que Node.js ahora es compatible con el módulo ES6, simplemente puede agregar "type": "module" en su package.json para facilitar la sintaxis de import / export incluso sin el --experimental-modules para ejecutar su código a través de la CLI del node . Comando sin ningún problema. A mi:
require() de la especificación CommonJS en nuestro código.Entonces, ¿por qué algunas personas quieren usar el módulo ES6? ¿Es solo para importar módulos de forma asíncrona? No me parece. Su mayoría puede ser algunas razones más importantes que esto. Pero aparentemente avanzar hacia la sintaxis más nueva será una tendencia. ¿Alguna idea?
p.d., he leído algunos hilos antiguos que dicen que la mayoría de los marcos de prueba no son compatibles con la sintaxis del módulo ES6, y desde el último punto de la lista de CommonJS:
No se puede usar para cargar módulos ECMAScript (aunque es posible cargar módulos ECMASCript desde módulos CommonJS).
Así que creo que esta podría ser una de las razones por las que a la mayoría de las personas no les importa migrar a la sintaxis de import más reciente en Node.js.
¿Alguien puede corregirme si alguna declaración que proporcioné anteriormente es incorrecta?
La sección de comentarios debajo de mi OP se ha vuelto bastante grande. Así que permítanme proporcionar una conclusión para mí (y los futuros lectores), después de que muchas pestañas (probablemente más de 100) ahora se cerraron después de que (finalmente) las organicé.
¿Cuál es el beneficio de usar la sintaxis del módulo ES6 en Node.js sin transpilación ?
El "sin transpilación" significa que la versión de Node.js que está utilizando debe ser compatible con el módulo ES6, lo que hace desde v12, según la respuesta de @Felix Kling .
[...] Así que en realidad NO es tan simple como hacer lo mismo de manera diferente .
Pero en realidad puede import módulos CommonJS sin problemas , según un artículo de Simon Plenderleith , que incluye un enlace a la solicitud de extracción relacionada en el repositorio de Node.js. Esto también lo menciona @jabaa en la sección de comentarios de mi OP. Pero desafortunadamente él/ella no tiene una referencia para ello.
Entonces, ¿por qué algunas personas quieren usar el módulo ES6? ¿Es solo para importar módulos de forma asíncrona? No me parece. Su mayoría puede ser algunas razones más importantes que esto. [...]
Entonces, una de las razones debe ser el temblor de árboles , que se menciona dos veces en la sección de comentarios debajo de mi OP. Y tenga en cuenta que si bien esto podría ser posible en los módulos CommonJS, el rendimiento con los módulos ES6 debe ser mejor, ya que la import de ES6 a nivel de sintaxis es de naturaleza estática (no estoy hablando de la versión de import() ), y ES6 los módulos sólo se inicializarán una vez . Con el movimiento del árbol, su código se vuelve más pequeño, por lo que su sitio web/biblioteca se ejecutará/cargará más rápido, y la velocidad es importante en el front-end, ¿no?
Pero aparentemente avanzar hacia la sintaxis más nueva será una tendencia. ¿Alguna idea?
Absolutamente. En el momento en que escribo esto, Node.js está predeterminado en "type": "commonjs" debido a la compatibilidad, ya que durante los viejos tiempos la sintaxis de los módulos ES6 no se fusionó/inventó. Ahora, el uso de la sintaxis de los módulos ES6 está preparado para el futuro, funcionará incluso cuando las personas no usen Node.js en el futuro (¡perdón por decir esto! Pero aparentemente será reemplazado por algo nuevo/elegante en el futuro...)