Deno: análisis y opinión personal
Esta semana he estado probando Deno (GitHub: denoland/deno), después de mucho tiempo siguiéndolo, me apetecía experimentar y descubrir qué me podría aportar en un nuevo proyecto. Primero vamos a repasar qué es Deno y por qué surge, y luego te cuento mi opinión personal.
¿Qué es Deno?
Deno es un entorno de ejecución (*runtime*) de JavaScript, TypeScript y WebAssembly que busca mejorar la seguridad, la experiencia de desarrollo y el rendimiento. El runtime está construido utilizando el motor de JavaScript V8, el lenguaje de programación Rust y el framework Tokio. Además ha sido desarrollado por el propio creador de Node, para intentar mejorar algunos de los problemas que este entorno (Node) presenta.
Las mejoras con las que se presenta son:
- Soporte nativo para TypeScript. No necesitas realizar un proceso de compilación previo de forma explícita, ya que deno lo hace por ti cuando ejecuta código de typescript, lo compila y lo cachea. Utiliza el famoso compilador swc, también hecho en Rust.
- Soporte nativo para módulos ES (
import { … } from “package”
).- Los paquetes pueden importarse directamente desde una URL en vez de usar NPM.
- Soporte nativo a la API del navegador (fetch, window).
- Seguridad mejorad. Cada aplicación necesita definir ciertos permisos para acceder a los diferentes recursos del host.
- Permite utilizar
await
en el primer nivel (top-level). - Tiene una buena documentación, de donde he sacado la información del post.
Cómo instalar Deno
La instalación de Deno es muy simple. Si utilizas Mac ejecuta el siguiente comando, en caso contrario aquí tienes una lista de los comandos de instalación.
curl -fsSL https://deno.land/x/install/install.sh | sh
Tras instalarlo, puedes ejecutar el siguiente comando en tu terminal para verificar que funciona correctamente:
deno --version
Que en mi caso produce el siguiente resultado:
Mi opinión personal
Quería hacer una prueba de concepto, pero siendo honestos, al final se resume en crear un script con typescript (o javascript) y ejecutarlo con Deno en vez de con Node. Sí, es mucho más simple y nuevo pero no deja de ser lo mismo a día de hoy.
Personalmente me gusta que está basado en Rust, de forma que intenta mejorar el rendimiento y la utilización de recursos, así como todas las mejoras que comento en este post y que hacen más fácil la experiencia de desarrollo: mejora el soporte nativo de muchas funcionalidades, como el proceso de compilado de typescript, de forma que como desarrollador no te tienes que preocupar de configurar y mantener esa parte.
Ahora bien, lo que deno nos ofrece ya lo implementó el lenguaje Go mucho antes. Go es uno de mis lenguajes favoritos, ya que combina velocidad de desarrollo junto con rendimiento, consumiendo mucho menos recursos.
Si tuviese que crear alguna pieza de un producto, que sea pequeña y esté bien definida, y necesito rapidez por lo que usar Js o Ts me beneficiaría, posiblemente probaría a utilizar Deno. En cualquier otro caso utilizaría Node ya que la comunidad y su estabilidad en producción es mucho mayor.
Honestamente me ha sorprendido que la comunidad que tiene Deno a día de hoy es pequeña, y tras realizar múltiples búsquedas en Google no he encontrado prácticamente historias de empresas o personas que utilicen Deno.
Es por esto que este post ha sido más breve de lo que me habría gustado. Mi idea era explorarlo en profunidad y hacer alguna prueba, pero creo que no merece la pena.
Prefiero probar bun.sh. ¿Por qué?
Mi principal requisito en el side-project en el que estoy trabajando, que te lo contaré en futuros posts, es que tenga un alto rendimiento y un bajo uso de recursos, por lo que Go es el lenguaje que estoy utilizando. Necesito crear una pequeña API simple, independiente a la API hecha en Go. Es el momento perfecto para divertirme leyendo, investigando y probando algo nuevo que cumple estos requistos, y bun parece ser mucho más eficiente en cuanto al uso de recursos.
Si te ha parecido interesante, suscríbete a la newsletter para que te envíe las novedades del blog.
Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.