Deno: ¿Una alternativa real a Node.js?
Si te mueves en el mundo de JavaScript, seguro que Node.js es tu pan de cada día. Pero, ¿has oído hablar de Deno? Y no, no es solo “Node” al revés (aunque el guiño es genial). Deno es un runtime para JavaScript y TypeScript creado por el mismísimo Ryan Dahl, el padre de Node.js.
Imagínate que creas algo increíble, pero con el tiempo te das cuenta de que podrías haberlo hecho mejor. Eso es Deno para Ryan Dahl. Es su oportunidad de redimirse y arreglar lo que él considera los “errores de diseño” de Node.js. El resultado es un entorno de ejecución más moderno, seguro y con una experiencia de desarrollo que te va a sorprender.
¿Qué hace a Deno tan especial?
¡A programar desde el minuto cero!
Una de las cosas que más me gustan de Deno es que viene con todo lo que necesitas para empezar a trabajar. ¿Cansado de configurar ESLint, Prettier, Jest y un montón de dependencias de desarrollo cada vez que empiezas un proyecto?
Deno incluye out of the box:
- Un formateador de código (
deno fmt): Para que tu código siempre luzca impecable y consistente. - Un linter (
deno lint): Para detectar problemas y mantener la calidad del código. - Un runner de tests (
deno test): Con soporte para tests unitarios y de integración, al estilo BDD (como Jest) o al estilo de Deno conDeno.test. - Soporte nativo para TypeScript: Sin necesidad de instalar
tscni configurartsconfig.json. Escribes en TypeScript y Deno se encarga del resto. - Un repositorio de librerías (JSR), Deno tiene su propio ecosistema de dependencias llamado JSR. Pero en las últimas versiones ahora soporta librerías del ecosistema de NPM.
Esto significa menos tiempo configurando y más tiempo programando. ¡Productividad al máximo desde el primer momento! Toda la configuración del entorno queda en el archivo deno.json y de esta forma es fácil de transportar, lo subes al repositorio y todo tu equipo lo usa (y lo va mejorando).
Seguridad: Tú tienes el control
Otro de los pilares de Deno es la seguridad. A diferencia de Node.js, donde un script puede acceder a tu sistema de archivos, a la red o a las variables de entorno sin que te des cuenta, Deno ejecuta el código en un sandbox.
Por defecto, un script de Deno no tiene permisos para hacer nada “peligroso”. Si necesita acceder a la red, al sistema de archivos o a cualquier otra cosa, tienes que dárselo explícitamente con flags al ejecutar el comando:
1 | # Permite leer del sistema de archivos |
Este modelo de permisos explícitos te da un control total sobre lo que tus dependencias pueden y no pueden hacer, evitando sorpresas desagradables.
Gestión de dependencias
En Deno, no existe la carpeta node_modules ni el archivo package.json. Las dependencias se importan directamente desde una URL, como en el navegador:
1 | import { serve } from "https://deno.land/std@0.140.0/http/server.ts"; |
La forma de hacer los imports con las urls en los archivos TS, a mi modo de ver, es poco mantenible. Se hicieron varios esfuerzos para que sea una vía simple de mantener, pero al parecer llegaron a algo como un administrador de dependencias centralizado en el archivo deno.json. En las últimas versiones, además, agregaron soporte para incluir dependencias del ecosistema de NPM, de esta forma, se amplió la cantidad de librerías que puedes usar.
Si vas a usar dependencias de NPM, a veces se genera un archivo package.json muy básico con el propósito de agregar dependencias solamente.
Deno descarga y cachea las dependencias la primera vez que se ejecuta el script. Si quieres asegurarte de que las dependencias no cambien, puedes usar un archivo deno.json (o deno.jsonc) para gestionar las versiones, de forma similar a como lo harías con un package.json, pero mucho más simple.
Un ejemplo rápido
La mejor forma de entenderlo es probándolo. ¡Vamos a crear un pequeño proyecto!
1. Instalación
Deno está disponible para la mayoría de los sistemas operativos. Pásate por la página de instalación, busca tu SO y sigue los pasos.
2. Inicializando el proyecto
Una vez instalado, crear un proyecto es tan fácil como esto:
1 | $ mkdir mi-proyecto-deno && cd mi-proyecto-deno |
¡Y ya está! Deno te crea tres archivos:
deno.json: El corazón de tu proyecto, similar alpackage.json.main.ts: Tu punto de entrada.main_test.ts: Un archivo de ejemplo para tus tests.
3. El código
El archivo main.ts que se genera es súper simple:
1 | export function add(a: number, b: number): number { |
Puedes ejecutarlo con deno run main.ts y verás en la consola:
1 | 2 + 3 = 5 |
4. Los tests
Y el archivo de test, main_test.ts, no se queda atrás en simplicidad:
1 | import { assertEquals } from "@std/assert"; |
Ejecútalo con deno test y verás que todo funciona como la seda:
1 | Check file:///Users/pcollaog/mi-proyecto-deno/main_test.ts |
Conclusión
Como ves, Deno no es solo un capricho. Es una propuesta seria que replantea el desarrollo del lado del servidor con JavaScript/TypeScript, poniendo el foco en la seguridad, la simplicidad y una experiencia de desarrollo moderna y sin fricciones.
Si vienes de Node.js, la curva de aprendizaje es mínima y las ventajas son enormes. Menos configuración, más seguridad y un conjunto de herramientas unificado que te hará la vida más fácil.
¿Mi recomendación? Dale una oportunidad. Puede que te sorprendas y encuentres a tu nuevo mejor amigo para tus proyectos de backend.
¿Y tú, ya has probado Deno? ¡Cuéntame tu experiencia en los comentarios!
En un próximo artículo, profundizaré en mi experiencia con los frameworks web más populares para Deno.
Referencias
Deno: ¿Una alternativa real a Node.js?
https://blog.pcollaog.cl/2025/10/23/Deno-una-alternativa-a-node-js/