Pasar al contenido principal
Cargando...

Deno: La gran alternativa a Node.js

Inspiring technology by Hunters

Nuestros Hunters siguen trayéndonos más novedades tecnológicas. En esta ocasión nos hablan de Deno: La gran alternativa a Node.js. ¡Sigue leyendo!

En cuanto a JavaScript se refiere, todos conocemos Node.js. Ha sido, desde hace muchos años, el runtime environment por excelencia si se quiere trabajar con el lenguaje web ya mencionado, aportando un sistema asíncrono mediante el cual se utilizan eventos para realizar la construcción de aplicaciones en tiempo de ejecución. Es fiable, reconocido en la comunidad y rápido, pero no perfecto. Y su propio creador lo sabe. Por ello, en los últimos ocho años ha desarrollado lo que presenta como la alternativa moderna a Node.js: Deno. En los siguientes apartados nos adentraremos en este entorno de ejecución y comprobaremos si verdaderamente puede ser el sustituto del ya longevo Node.js.

TypeScript nativo:

Deno es un runtime que cumple con las mismas características básicas de Node.js, pero añade algunos extras. Uno de los más importantes es su soporte nativo para TypeScript, algo que Node.js solo puede lograr mediante configuración adicional. A continuación, podemos ver un ejemplo en cada uno de estos entornos sobre cómo inicializar una aplicación en TypeScript:

 TypeScript funciona en Deno sin complicaciones

Para usar TypeScript en Node.js debemos importar el módulo correspondiente

 Ahora deberemos compilar TypeScript a JavaScript para poder ejecutarlo

Aquí comprobamos que al realizar la compilación la principal diferencia se debe a la necesidad de Node.js de descargar un módulo con el fin de utilizar TypeScript mientras que en Deno es compatible sin añadidos. Además de esto, Node.js tiene el paso añadido de compilar TypeScript a JavaScript antes de poder ejecutar el código.

Seguridad ya implementada:

También encontramos una clara diferencia en cuanto a la integración de seguridad ya que en Deno esta se encuentra integrada implícitamente, mientras que con Node.js tendremos que ser nosotros los encargados de realizar los cambios pertinentes para conseguirla:

 Aquí vemos como Deno nos pregunta cada vez que el código compromete la seguridad del sistema

 Seleccionamos cuándo queremos que se permita vulnerar la seguridad

 En cambio, en Node.js se realizan las operaciones sin comprobantes

Si bien es cierto que podemos desactivar estos sistemas de seguridad, como mínimo nos garantizan que desde el inicio del proyecto se incitará a aquellos que lo compilen a realizar las pertinentes comprobaciones y por ello a promulgar las buenas prácticas de ciberseguridad, algo que Node.js no tiene en cuenta a no ser que se le especifique explícitamente mediante módulos externos.

¿Y qué ocurre con mis módulos npm?

Uno de los grandes inconvenientes que pueden surgir a la hora de utilizar Deno es tener que migrar todos los proyectos ya creados utilizando Node.js sobretodo teniendo en cuenta la cantidad de módulos de los que dependeríamos. Para esto Deno introdujo la posibilidad de utilizar igualmente los módulos npm de forma nativa, facilitando así la entrada por parte de los usuarios en este runtime y permitiendo valerse de su gran biblioteca de herramientas:

Aquí se utiliza el módulo npm node-emoji con Deno

He utilizado el módulo node-emoji y cómo podemos comprobar, efectivamente se pueden utilizar en Deno sin ningún problema permitiendo el uso de los millones que ya han sido creados por la comunidad de Node.js y por ello pudiendo aprovechar esta gran característica con sólo unos pequeños cambios en el código de importación.

Misma integración con Front-end:

Una de las mayores dudas que pueden surgir al cambiar de Node.js a Deno es si a la hora de utilizarlo como herramienta backend, la integración junto al Front-end será igual o como mínimo sencilla. En este caso se puede comprobar con facilidad que efectivamente Deno no presenta ningún problema a la hora de integrarse junto a frameworks como Angular o bibliotecas como React, pudiendo realizar los mismos proyectos que con Node.js.

 Resultado del Front-end en Angular con Back-end de Deno

 Resultado del Front-end en Angular con Back-end de Node.js

Mejoras en el rendimiento:

Por último, cabe destacar que Deno es significativamente más veloz procesando peticiones web. A continuación, se muestran los diferentes resultados de tiempo y cantidad de peticiones por segundo en Node.js y Deno obtenidos a partir de test con JUnit:

Podemos comprobar cómo Deno resulta ser más rápido que su contraparte Node.js y si nos fijamos en benchmarks existentes en internet, los resultados apuntan a lo mismo.

En resumen, una vez vistos y comparados las diferentes características y prestaciones que ofrecen cada uno de los runtime, encontramos una notoria mejoría en Deno con respecto a Node.js. Desde la compatibilidad nativa con Typescript, pasando por la seguridad y facilidad de testeo hasta el aumento de la eficiencia, hacen de Deno una importante y potente alternativa a tener en cuenta.
 

¿Quieres saber más sobre Hunters?

Ser un hunter es aceptar el reto de probar nuevas soluciones que aporten resultados diferenciales. Únete al programa Hunters y forma parte de un grupo transversal con capacidad de generar y transferir conocimiento.

Anticípate a las soluciones digitales que nos harán crecer. Consulta más información sobre Hunters en la web.

Ruben Gadea

Rubén Gadea
Técnico de Software
Altia