Deno: entorno de ejecución para JavaScript y TypeScript
Deno es un entorno en tiempo de ejecución radicalmente simple para JavaScript y TypeScript. Ofrece a sus usuarios una nueva y sencilla forma de escribir JavaScript y TypeScript en el lado del servidor. La plataforma está dando sus primeros pasos, pero ya en esta fase temprana da indicios de que podría acabar por reemplazar al veterano entorno Node.js. Sin embargo, para esto la comunidad de desarrolladores de JavaScript también tendrá que adoptar su uso.
Algunos productos son muy populares en la comunidad a pesar de sus fallos. El lenguaje de scripting JavaScript es un buen ejemplo de esto. A pesar de sus defectos evidentes, es uno de los lenguajes más utilizados en todo el mundo, y dispone de numerosos marcos de trabajo y bibliotecas. Node.js, el casi predecesor de Deno, también es muy popular en la comunidad. Con su nuevo proyecto Deno, el desarrollador responsable, Ryan Dahl, quiere aprovechar la experiencia adquirida con Node.js y ofrecer una plataforma nueva, más segura y mejor. En este artículo hablamos de si será posible y, en su caso, cómo.
¡Consigue tu dominio gratis con IONOS!
- Simple
- Seguro
- Asistencia 24/7
¿Qué es Deno?
Deno está todavía dando sus primeros pasos. Las interfaces, la arquitectura y las decisiones de diseño aún no están completamente definidas, y seguramente cambiarán durante el desarrollo. Por lo tanto, en algunos aspectos es difícil compararlo directamente con Node.js, mencionado anteriormente. El propio desarrollador de ambas plataformas ha hecho una comparación aproximada en el siguiente vídeo de YouTube:
Deno y Node se parecen en algo más que el nombre. Su concepto básico es también el mismo: ofrecen una plataforma de ejecución de JavaScript fuera del navegador y la posibilidad de escribir en JavaScript (o TypeScript) en el lado del servidor. Para esto, utilizan distintos proyectos ya disponibles, por lo que no se trata de una implementación propia. Para la ejecución de JavaScript en diferentes entornos, por ejemplo, se utiliza de forma predeterminada el motor V8 de Google, que ya está integrado en los navegadores Chrome y Edge. Por lo tanto, en el lado del servidor, Deno usa V8, al igual que Node.js.
Las similitudes llegan hasta aquí. A diferencia de Node, que está escrito en C++, Deno utiliza el lenguaje de programación innovador y más seguro Rust, de Mozilla Research. Esto permite a Deno escribir directamente código estático, lo que es prácticamente la ventaja definitiva.
Características de Deno: out of the box
Deno tiene dos funciones que simplifican 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 correspondencia uno a uno. Por otro lado, Deno permite que el código de TypeScript se ejecute libremente.
Normalmente, una mayor libertad para los desarrolladores suele implicar más riesgo en la aplicación. Sin embargo, Deno es muy avanzado en términos de seguridad. Normalmente, los scripts se ejecutan en una partición sandbox, separada del sistema operativo. Los desarrolladores tienen capacidad limitada para añadir funcionalidades adicionales.
En comparación, Deno está mucho más cerca de la experiencia del usuario en internet: el acceso al sistema está bloqueado de manera predeterminada, y el usuario debe dar permiso a la aplicación para acceder al sistema o, de lo contrario, ambos permanecen aislados. Esto es similar a cuando un navegador pide acceso a la cámara web y al micrófono durante una videoconferencia. Solo se puede acceder a los recursos con el consentimiento del usuario. En resumen: Deno se comporta como un navegador de secuencias de comandos.
Deno se suma también a la tendencia más importante en el desarrollo de JavaScript: el soporte nativo de TypeScript.
TypeScript difiere del lenguaje de programación JavaScript principalmente en el campo de la tipificación. JavaScript deja (demasiada) libertad al teclear variables y funciones. Al programar, no espera indicaciones 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 TypeScript, se asigna una variable a un tipo de forma predeterminada. Por lo tanto, la función y la salida se asignan de antemano. Si la asignación es incorrecta, se notifica de inmediato.
Para convertir el código generado en TypeScript a Javascript y ejecutarlo, se debe dar un paso adicional con un compilador. El intercambio 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 compilació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 componente de Node, la combinació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ásicamente 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 directamente los recursos necesarios.
¿Cómo funciona Deno?
Deno está dando sus primeros pasos. Está muy orientado a la seguridad y las cuestiones arquitectónicas básicas. Esto comienza con la instalación, que no se hace con la comodidad de un instalador, sino solamente a través de GitHub o shell scripts, o el administrador de paquetes del sistema operativo. Para comprobar si la instalación se ha realizado correctamente, 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 TypeScript. Si no quieres instalar Deno en el sistema, también puedes configurarlo y ejecutarlo 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 interactiva como un shell o con un archivo como entrada. El primero es útil para aplicaciones más pequeñas y para experimentar con la alternativa 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 plataforma, y entonces se puede empezar a trabajar con Deno.
Las conocidas palabras clave de JavaScript como import, export, promise, etc. están disponibles directamente en Deno y no hay que importarlas previamente. Además de los estándares, la plataforma ofrece un objeto global al que los desarrolladores no han dado nombre, por lo que se llama simplemente Deno. El objeto Deno es la base de cada aplicación. Actúa como una interfaz con el sistema: por ejemplo, permite a los desarrolladores acceder al sistema de archivos y salir de la sandbox. Como mencionamos, hay que confirmar activamente estas excepciones para excluir los ataques inadvertidos al sistema por parte de una aplicación.
Deno ofrece todos los módulos estándar; sin embargo, la comunidad ya ha comenzado a ofrecer otros módulos adicionales experimentales que amplían la gama de funciones.
Deno: resumen de sus ventajas e inconvenientes
¿Llegará Deno a superar a Node? El desarrollador Ryan Dahl está convencido de ello. Para crear una plataforma moderna, estable y segura para JavaScript y TypeScript del lado del servidor, hay que resolver primero los problemas, errores y compromisos heredados. En todo caso, tiene el potencial de sobrepasar a su predecesor, especialmente gracias al paso de emplear el lenguaje de programación Rust de Mozilla en su núcleo y crear un sistema central de autorización. Esto no solo permite un uso intuitivo, sino que también evita la fuga indeseada de una aplicación de la sandbox.
El flujo de trabajo muy simplificado (todavía) tiene algunos inconvenientes: Deno no siempre es compatible con los ecosistemas existentes. Por ejemplo, los módulos de Node no pueden funcionar sin más en Deno o viceversa. Sin embargo, si la plataforma sigue probándose, probablemente a largo plazo deje de presentar problemas. Por ejemplo, Deno ya tiene una función require compatible con Node.
Deno está todavía en estado de proyecto. Sin embargo, las primeras soluciones que ofrece a algunas de las mayores debilidades de Node.js son prometedoras.
- Rápido, seguro, flexible y escalable
- Certificado SSL/DDoS incluido
- Dominio y asesor personal incluidos