node.js - modules - nodejs 8 import module-require or import?
node esm (1)
ACTUALIZACIÓN-2017.11.01 ↓
Respuesta corta
Todavía estamos usando require
Respuesta larga
La carga de ESM ha aterrizado parcialmente en el nodo 8.5.0
que se lanzó en septiembre. Ver la documentación API here . Las advertencias incluyen la necesidad del --experimental-modules
y el uso de una nueva extensión .mjs
para módulos. Puedes echar un vistazo a la discusión completa here
Todavía hay cambios que deben ocurrir en V8 antes de que la carga de ESM sea estable y completa, así que con mi respuesta original, aún así le aconsejaría que se quede con CommonJS si no usa Babel para otras cosas.
Vea este post para una explicación más didáctica
RESPUESTA ANTERIOR ↓
Las dos implementaciones son completamente diferentes bajo el capó, por lo que hay más que lo que se ve a los ojos
La conclusión es que todavía hay cuestiones / preguntas persistentes sobre las especificaciones (hasta el V8), y como tal, la import
no puede implementarse actualmente en Node sin utilizar un transpiler.
Vea este comentario (con fecha de febrero de 2017) de uno de los contributor :
En el momento actual, todavía hay una serie de problemas de especificación e implementación que deben suceder en el lado ES6 y Virtual Machine antes de que Node.js pueda incluso comenzar a trabajar en una implementación soportable de módulos ES6. El trabajo está en progreso, pero tomará algo de tiempo. Actualmente estamos estudiando alrededor de un año como mínimo.
Tenga en cuenta que los transpilers simplemente convierten la sintaxis del módulo ES6 a la sintaxis del módulo CommonJS, por lo que actualmente no hay beneficios de rendimiento. En otras palabras, si ya no tiene una interconexión de Babel, no hay muchos incentivos para crear una solo para usar la nueva sintaxis de import
propuesta, excepto desde una perspectiva sintáctica proactiva.
Para obtener más detalles sobre cómo difiere la implementación, consulte esta redacción
Esta pregunta ya tiene una respuesta aquí:
Solo me pregunto cómo importamos un módulo en node.js 8 - ¿Seguimos usando require
?
¿O todavía necesitamos babel para usar la import
?
He estado cavando pero parece que no hay respuesta. Si aún tenemos que usar require, ¿por qué no puede implementar node aún?