Skip to main content

Introducción a Node.js

nodejslogo

Node.js es un intérprete de JavaScript (JS) que no depende del navegador, creando la posibilidad de ejecutar código JS en otros entornos. La mayoría de los navegadores tienen internamente un intérprete de JavaScript en su núcleo, por eso son capaces de interpretar.

Hablar de NodeJS es hablar de Javascript. Revolucionó JavaScript porque trajo este lenguaje para hacer mucho más que crear frontend web y efectos visuales.

Ahora podemos crear:

  • Aplicaciones backend
  • CLIs
  • Aplicaciones de escritorio
  • Inteligencia Artificial
  • Etc

El V8 es el motor JavaScript de Google que está presente en Google Chrome y es usado por NodeJS. Es responsable de entender el lenguaje.

Algunas bibliotecas aumentan las funcionalidades del lenguaje, como por ejemplo libuv con enfoque en comunicación E/S asíncrona que permiten usar nodejs para desarrollar backends.

Ventajas de node

  • Ligero.
  • Usa poca memoria.
  • Buen aprovechamiento de CPU.
  • Ecosistema de bibliotecas, módulos y plugins gigantesco y una comunidad muy activa.
  • Rendimiento asíncrono y no bloqueante siendo óptimo para intensos I/O como chats, juegos, streaming, etc, pues gestiona con eficiencia múltiples conexiones.
  • Óptima escalabilidad por tener una arquitectura basada en eventos.
  • Facilidad en el desarrollo en tiempo real.
  • Fácil deploy.
  • Mucha demanda de profesionales en el mercado.
  • Usada en el front y en el backend pudiendo mantener una aplicación full stack javascript.

Desventajas

  • No es el lenguaje con buen rendimiento para operaciones computacionales pesadas que involucran muchos cálculos. Cálculos muy pesados pueden bloquear el loop de eventos degradando más el rendimiento de la aplicación como un todo.
  • En aplicaciones de gran escala gestionar es necesario que el código sea optimizado para no tener fuga de memoria.
  • Estandarización de código exige un esfuerzo mayor, pues javascript ofrece mucha flexibilidad.
  • No es un lenguaje fuertemente tipado aumentando las posibilidades de errores, a pesar de que typescript mitiga esto.
  • Amplia gama de bibliotecas difíciles de ser auditadas, pudiendo sufrir ataques. Es necesario cierto cuidado al elegir las bibliotecas.