Deno es un entorno en tiempo de ejecución ra­di­ca­l­me­n­te simple para Ja­va­S­cri­pt y Ty­pe­S­cri­pt. Ofrece a sus usuarios una nueva y sencilla forma de escribir Ja­va­S­cri­pt y Ty­pe­S­cri­pt en el lado del servidor. La pla­ta­fo­r­ma está dando sus primeros pasos, pero ya en esta fase temprana da indicios de que podría acabar por re­em­pla­zar al veterano entorno Node.js. Sin embargo, para esto la comunidad de de­sa­rro­lla­do­res de Ja­va­S­cri­pt también tendrá que adoptar su uso.

Algunos productos son muy populares en la comunidad a pesar de sus fallos. El lenguaje de scripting Ja­va­S­cri­pt es un buen ejemplo de esto. A pesar de sus defectos evidentes, es uno de los lenguajes más uti­li­za­dos en todo el mundo, y dispone de numerosos marcos de trabajo y bi­blio­te­cas. Node.js, el casi pre­de­ce­sor de Deno, también es muy popular en la comunidad. Con su nuevo proyecto Deno, el de­sa­rro­lla­dor re­s­po­n­sa­ble, Ryan Dahl, quiere apro­ve­char la ex­pe­rie­n­cia adquirida con Node.js y ofrecer una pla­ta­fo­r­ma nueva, más segura y mejor. En este artículo hablamos de si será posible y, en su caso, cómo.

Dominios web
Compra y registra tu dominio ideal
  • Tu dominio protegido con Ce­r­ti­fi­ca­do SSL Wildcard gratis
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Qué es Deno?

Deno está todavía dando sus primeros pasos. Las in­te­r­fa­ces, la ar­qui­te­c­tu­ra y las de­ci­sio­nes de diseño aún no están co­m­ple­ta­me­n­te definidas, y se­gu­ra­me­n­te cambiarán durante el de­sa­rro­llo. Por lo tanto, en algunos aspectos es difícil co­m­pa­rar­lo di­re­c­ta­me­n­te con Node.js, me­n­cio­na­do an­te­rio­r­me­n­te. El propio de­sa­rro­lla­dor de ambas pla­ta­fo­r­mas ha hecho una co­m­pa­ra­ción apro­xi­ma­da en el siguiente vídeo de YouTube:

mzfw9TwBiQc.jpg Para mostrar este video, se requieren cookies de terceros. Puede acceder y cambiar sus ajustes de cookies aquí.

Deno y Node se parecen en algo más que el nombre. Su concepto básico es también el mismo: ofrecen una pla­ta­fo­r­ma de ejecución de Ja­va­S­cri­pt fuera del navegador y la po­si­bi­li­dad de escribir en Ja­va­S­cri­pt (o Ty­pe­S­cri­pt) en el lado del servidor. Para esto, utilizan distintos proyectos ya di­s­po­ni­bles, por lo que no se trata de una im­ple­me­n­ta­ción propia. Para la ejecución de Ja­va­S­cri­pt en di­fe­re­n­tes entornos, por ejemplo, se utiliza de forma pre­de­te­r­mi­na­da el motor V8 de Google, que ya está integrado en los na­ve­ga­do­res Chrome y Edge. Por lo tanto, en el lado del servidor, Deno usa V8, al igual que Node.js.

Las si­mi­li­tu­des llegan hasta aquí. A di­fe­re­n­cia de Node, que está escrito en C++, Deno utiliza el lenguaje de pro­gra­ma­ción innovador y más seguro Rust, de Mozilla Research. Esto permite a Deno escribir di­re­c­ta­me­n­te código estático, lo que es prá­c­ti­ca­me­n­te la ventaja de­fi­ni­ti­va.

Ca­ra­c­te­rí­s­ti­cas de Deno: out of the box

Deno tiene dos funciones que si­m­pli­fi­can muchísimo el flujo de trabajo: en primer lugar, este entorno en tiempo de ejecución utiliza un sistema de módulos simples en el que los URL y los módulos están en co­rre­s­po­n­de­n­cia uno a uno. Por otro lado, Deno permite que el código de Ty­pe­S­cri­pt se ejecute li­bre­me­n­te.

No­r­ma­l­me­n­te, una mayor libertad para los de­sa­rro­lla­do­res suele implicar más riesgo en la apli­ca­ción. Sin embargo, Deno es muy avanzado en términos de seguridad. No­r­ma­l­me­n­te, los scripts se ejecutan en una partición sandbox, separada del sistema operativo. Los de­sa­rro­lla­do­res tienen capacidad limitada para añadir fu­n­cio­na­li­da­des adi­cio­na­les.

En co­m­pa­ra­ción, Deno está mucho más cerca de la ex­pe­rie­n­cia del usuario en internet: el acceso al sistema está bloqueado de manera pre­de­te­r­mi­na­da, y el usuario debe dar permiso a la apli­ca­ción para acceder al sistema o, de lo contrario, ambos pe­r­ma­ne­cen aislados. Esto es similar a cuando un navegador pide acceso a la cámara web y al micrófono durante una vi­deo­co­n­fe­re­n­cia. Solo se puede acceder a los recursos con el co­n­se­n­ti­mie­n­to del usuario. En resumen: Deno se comporta como un navegador de se­cue­n­cias de comandos.

Deno se suma también a la tendencia más im­po­r­ta­n­te en el de­sa­rro­llo de Ja­va­S­cri­pt: el soporte nativo de Ty­pe­S­cri­pt.

Nota

Ty­pe­S­cri­pt difiere del lenguaje de pro­gra­ma­ción Ja­va­S­cri­pt pri­n­ci­pa­l­me­n­te en el campo de la ti­pi­fi­ca­ción. Ja­va­S­cri­pt deja (demasiada) libertad al teclear variables y funciones. Al programar, no espera in­di­ca­cio­nes sobre el tipo de variable o función, por lo que el código es más difícil de entender y de leer. En Ty­pe­S­cri­pt, se asigna una variable a un tipo de forma pre­de­te­r­mi­na­da. Por lo tanto, la función y la salida se asignan de antemano. Si la asi­g­na­ción es in­co­rre­c­ta, se notifica de inmediato.

Para convertir el código generado en Ty­pe­S­cri­pt a Ja­va­s­cri­pt y eje­cu­tar­lo, se debe dar un paso adicional con un co­m­pi­la­dor. El in­te­r­ca­m­bio de datos se realiza siempre en paquetes. De este modo, Deno no necesita un paquete externo como ts-node, que se encarga del proceso de co­m­pi­la­ción en Node.js, por ejemplo.

Deno también tiene algunas sorpresas en su gestión de paquetes: uno de los factores de éxito de Node es el gestor de paquetes npm. Aunque npm forma parte de la comunidad GitHub y, por lo tanto, no es un co­m­po­ne­n­te de Node, la co­m­bi­na­ción se considera un estándar no oficial. Deno, por otro lado, no necesita un gestor de paquetes externo, o, más bien, es bá­si­ca­me­n­te su propio gestor de paquetes. Su sistema modular permite resolver los paquetes a través de rutas o URL del sistema de archivos y descargar di­re­c­ta­me­n­te los recursos ne­ce­sa­rios.

¿Cómo funciona Deno?

Deno está dando sus primeros pasos. Está muy orientado a la seguridad y las cue­s­tio­nes ar­qui­te­c­tó­ni­cas básicas. Esto comienza con la in­s­ta­la­ción, que no se hace con la comodidad de un in­s­ta­la­dor, sino solamente a través de GitHub o shell scripts, o el ad­mi­ni­s­tra­dor de paquetes del sistema operativo. Para comprobar si la in­s­ta­la­ción se ha realizado co­rre­c­ta­me­n­te, hay que recurrir al comando de vieja escuela deno - version en la línea de comandos. De este modo, se obtiene una visión completa de la versión de Deno instalada, así como de las versiones de V8 y Ty­pe­S­cri­pt. Si no quieres instalar Deno en el sistema, también puedes co­n­fi­gu­rar­lo y eje­cu­tar­lo en un Docker Container.

Una vez instalado Deno, se puede ejecutar de dos maneras. El entorno de tiempo de ejecución se puede utilizar de forma in­ter­ac­ti­va como un shell o con un archivo como entrada. El primero es útil para apli­ca­cio­nes más pequeñas y para ex­pe­ri­me­n­tar con la al­te­r­na­ti­va a Node.js. Este último uso es el más común de Deno. En este caso, el nombre de un archivo se pasa a la pla­ta­fo­r­ma, y entonces se puede empezar a trabajar con Deno.

Las conocidas palabras clave de Ja­va­S­cri­pt como import, export, promise, etc. están di­s­po­ni­bles di­re­c­ta­me­n­te en Deno y no hay que im­po­r­tar­las pre­via­me­n­te. Además de los es­tá­n­da­res, la pla­ta­fo­r­ma ofrece un objeto global al que los de­sa­rro­lla­do­res no han dado nombre, por lo que se llama si­m­ple­me­n­te Deno. El objeto Deno es la base de cada apli­ca­ción. Actúa como una interfaz con el sistema: por ejemplo, permite a los de­sa­rro­lla­do­res acceder al sistema de archivos y salir de la sandbox. Como me­n­cio­na­mos, hay que confirmar ac­ti­va­me­n­te estas ex­ce­p­cio­nes para excluir los ataques inad­ve­r­ti­dos al sistema por parte de una apli­ca­ción.

Deno ofrece todos los módulos estándar; sin embargo, la comunidad ya ha comenzado a ofrecer otros módulos adi­cio­na­les ex­pe­ri­me­n­ta­les que amplían la gama de funciones.

Deno: resumen de sus ventajas e in­co­n­ve­nie­n­tes

¿Llegará Deno a superar a Node? El de­sa­rro­lla­dor Ryan Dahl está co­n­ve­n­ci­do de ello. Para crear una pla­ta­fo­r­ma moderna, estable y segura para Ja­va­S­cri­pt y Ty­pe­S­cri­pt del lado del servidor, hay que resolver primero los problemas, errores y co­m­pro­mi­sos heredados. En todo caso, tiene el potencial de so­bre­pa­sar a su pre­de­ce­sor, es­pe­cia­l­me­n­te gracias al paso de emplear el lenguaje de pro­gra­ma­ción Rust de Mozilla en su núcleo y crear un sistema central de au­to­ri­za­ción. Esto no solo permite un uso intuitivo, sino que también evita la fuga indeseada de una apli­ca­ción de la sandbox.

El flujo de trabajo muy si­m­pli­fi­ca­do (todavía) tiene algunos in­co­n­ve­nie­n­tes: Deno no siempre es co­m­pa­ti­ble con los eco­si­s­te­mas exi­s­te­n­tes. Por ejemplo, los módulos de Node no pueden funcionar sin más en Deno o viceversa. Sin embargo, si la pla­ta­fo­r­ma sigue pro­bá­n­do­se, pro­ba­ble­me­n­te a largo plazo deje de presentar problemas. Por ejemplo, Deno ya tiene una función require co­m­pa­ti­ble con Node.

En resumen

Deno está todavía en estado de proyecto. Sin embargo, las primeras so­lu­cio­nes que ofrece a algunas de las mayores de­bi­li­da­des de Node.js son pro­me­te­do­ras.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos
Ir al menú principal