Hola Deno! . 🦕

Francisco Suarez
Guanaco JS
Published in
3 min readMay 14, 2020

El día de hoy hablaremos de Deno y crearemos nuestro primer Hola Mundo.

Pero primero, que es Deno? Deno es un entorno de ejecución para JavaScript/TypeScript seguro y con una excelente experiencia en desarrollo. El mismo esta escrito completamente en V8, Rust y Tokio.

Sus principales características son:

  • Seguro por defecto, sin acceso a archivos, red o entorno de trabajo, a menos que esto este habilitado.
  • Soporte para TypeScript
  • Se envía un solo ejecutable (deno)
  • Cuenta con utilidades integradas como por ejemplo, un inspector de dependencias (deno info) y un formateo de codigo (deno fmt)
  • Tiene un conjunto de módulos estándar previamente auditados los cuales están garantizados para trabajar con Deno
  • Si se quiere los Scripts pueden ser agrupados en un solo archivo Javascript

Filosofía

Deno pretende ser un entorno productivo y seguro de secuencias de comandos para el programador moderno.

Deno siempre se distribuirá como un solo ejecutable. Dada una URL en un programa Deno, este ya se podría ejecutar. Deno asume explicitamente el rol de tiempo de ejecución y administrador de paquetes. Utiliza un protocolo estándar compatible con el navegador para la carga de módulos (URL)

Entre otras cosas, Deno es un gran remplazo para los scripts de utilidad que pueden haber sido escritos históricamente con bash o Python

Objetivos

  • Solo envié un ejecutable único (deno)
  • Provee valores predeterminados seguros. A menos que se permita específicamente, los scripts no pueden acceder a los archivos, el entorno o a la red.
  • Compatibilidad con el Navegador: El subconjunto de programas Deno que estén escritos completamente en Javascript pero que no utilicen el espacio global de Deno, deberán poder ejecutarse en un navegador web moderno sin cambios
  • Proporciona herramientas integradas como pruebas unitarias, formateo de código y linting para mejorar la experiencia del programador.
  • No filtrar los conceptos de V8 en el área de usuarios.
  • Ser capaz de servir HTTP de manera eficiente.

Comparación con Node.js

  • Deno no utiliza npm
  • Utiliza módulos referenciados por URL´s o rutas de archivos
  • Deno no utiliza package.json en el modulo de resolución de algoritmos.
  • Todas las acciones asíncronas en Deno devuelven una promesa. Por lo tanto, Deno provee diferentes API´s a las que provee Node.
  • Deno requiere permisos explícitos para el acceso a archivos, redes y entornos.
  • Deno siempre muere por error no detectados.
  • Utiliza “Módulos de ES (EcmaScript)” y no admite require(). Los módulos de terceros se importan a través de URL.

Otros comportamientos clave

  • El código remoto se recupera y almacena en cache en la primera ejecución, y nunca se actualiza hasta que se ejecuta con el indicador --reload. (Hasta entonces, esto seguirá funcionando)
  • Los módulos/archivos cargados desde URL remotas están destinados a ser inmutables y almacenables en cache.

Instalación de Deno

Deno es muy simple de instalar, lo primero que haremos es escribir en una terminal lo siguiente.

Una vez que termine ese proceso ejecutaremos el siguiente comando

Eso nos retornara en consola

Si quisiéramos crear un un ejemplo un poco mas complejo podríamos ejecutar el siguiente ejemplo que nos proporciona Deno.

Crearemos un archivo index.ts y luego desde un terminal ejecutaremos deno run index.ts

El día de hoy Deno se encuentra en versión 1.0, creo que tiene mucho futuro ! y es una excelente Herramienta. Actualmente me encuentro traduciendo su documentación al Español en mi Github. Cualquier recomendación o ayuda es mas que bienvenida, puedes igual chequear toda la documentación oficial en su web, te invito que intentes aprenderlo.

Referencias

Si el articulo te gusto o te pareció interesante por favor ayúdame con 👏 🤓 Puedes seguirme en Twitter o encontrarme en GitHub visitando mi sitio web.

--

--

Francisco Suarez
Guanaco JS

📚Computer Science Student 🚀 JavaScript Developer 🐱‍🚀 @reactjs @nodejs 🐱‍🏍 GDSC Lead🛸 and Contributor at MDN 🔥