Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
¿Por qué Node a menudo utiliza un sistema de módulos diferente al de los navegadores?

Estaba considerando actualizar mi código Node/Express para usar import en lugar de require agregando a mi archivo package.json la línea:

 "type": "module",

Sin embargo, no sabía por qué la mayoría de los códigos Node/Express que veo todavía usan require mientras que el código que veo en el navegador a través de webpack usa import.

¿Hay alguna razón para esta dualidad? ¿Se recomienda en general actualizar para importar? ¿La importación porque es más nueva se considera una actualización y una mejor tecnología?

Este Q/A anterior tiene más de 7 años y tiene mucha información histórica. Estoy buscando información más actual a medida que el idioma ha evolucionado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La razón de tener dos tipos de módulos es puramente histórica.

En 2009, cuando se creó Node.js, los módulos ES (sintaxis de import ) aún no existían, pero existían otras alternativas no estándar, siendo las más importantes AMD y CommonJS , para las cuales había disponibles varias implementaciones de navegador. Node.js decidió adoptar CommonJS ( require sintaxis). Por esta razón, todos los paquetes implementados hasta 2015 son paquetes de CommonJS.

Los módulos ES nativos se introdujeron con el estándar ECMAScript 2015, pero solo lo hicieron como una tecnología experimental en Node.js 8.5 en 2017, y no fue hasta Node.js 12 (2019) que su soporte se volvió lo suficientemente bueno para colocarlos como una alternativa a CommonJS (aunque esto es subjetivo). Por esta razón, una gran parte del software desarrollado para Node.js todavía usa módulos CommonJS con instrucciones require .

Si los módulos ES son mejores es una cuestión de opinión y no una pregunta adecuada para StackOverflow. Al menos, son JavaScript estándar , lo que los hace aptos para su uso tanto en navegadores como en Node.js, lo cual es una gran ventaja.

Una desventaja es que los módulos ES no se pueden requerir en el código CommonJS; lo contrario es cierto: los módulos ES pueden importar módulos CommonJS, por lo que si alguna de sus dependencias usa módulos ES, esa puede ser una buena oportunidad para cambiar su código a módulos ES. , también.

Entonces, ¿deberíamos actualizar para usar la import en general? Por supuesto, eso también es una cuestión de opinión. Y si esa fuera mi opinión, la respuesta sería "no", porque no hay razón para cambiar un sistema en funcionamiento. El código CommonJS no se oxidará ni empeorará simplemente porque hoy en día existe una alternativa mejor, aunque los módulos ES son una mejor opción para el código nuevo. Node.js, mientras la gente lo use, tampoco dejará de admitir CommonJS.

Hay un proyecto llamado Deno que está diseñado para proporcionar una alternativa más moderna y segura a Node.js para ejecutar código JavaScript en el servidor. Deno se diseñó originalmente para funcionar solo con módulos ES, pero pronto quedó claro que no admitir módulos CommonJS era un problema importante, porque muchos paquetes npm no funcionaban, por lo que introdujo un modo de compatibilidad para admitir módulos CommonJS bajo una bandera. La moraleja de la historia es: eliminar el soporte para require es una buena idea, pero volver a agregarlo es aún mejor.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda