Una Introducción a Deno para Desarrolladores de Node.js

Rate this content
Bookmark

Deno y Node.js tienen mucho en común. Ambos son entornos de ejecución de JavaScript fuera del navegador construidos sobre el motor V8. Sin embargo, Deno y Node.js también son diferentes en muchos aspectos: TypeScript, CommonJS, gestión de paquetes, sistemas de permisos, herramientas, complementos nativos, compatibilidad con navegadores. Esta charla comparará y contrastará los dos entornos de ejecución, centrándose en lo que los desarrolladores experimentados de Node.js necesitan saber para tener éxito con Deno.

22 min
20 Jun, 2022

Video Summary and Transcription

Esta charla proporciona una introducción a Deno para desarrolladores de Node.js, destacando las diferencias en arquitectura y dependencias entre los dos entornos de ejecución. Se discute la interfaz de línea de comandos (CLI) y la cadena de herramientas integrada de Deno, la biblioteca estándar de Deno y la gestión de dependencias, así como el entorno de ejecución de Deno y sus características principales. La charla también cubre el sistema de permisos de Deno, su enfoque en la compatibilidad con la plataforma web y su soporte para TypeScript. En general, proporciona una visión general completa de Deno y sus ventajas sobre Node.js.

Available in English

1. Introducción a Deno para desarrolladores de Node.js

Short description:

Voy a hablar sobre cómo empezar con Deno si eres un desarrollador de Node.js. He estado usando Node durante unos 10 años y recientemente comencé a trabajar en Deno. Node.js ha estado presente durante mucho más tiempo, desde alrededor de 2009, y luego Deno salió unos 10 años después. Lo interesante de Node.js es que es anterior a gran parte de lo que consideramos como JavaScript moderno. Deno ha adoptado un enfoque diferente, donde incluye muchas más funcionalidades. Tiene una cadena de herramientas integrada y muchas otras cosas. Node.js tiene un ecosistema enorme con mucho código heredado. Tener un ecosistema enorme es bueno, pero tener que mantener tanto código heredado puede ralentizar el progreso y dificultar la capacidad de Node de cumplir con los estándares.

Hola a todos. Gracias por venir a mi charla. Voy a hablar sobre cómo empezar con Deno si eres un desarrollador de Node.js. Un poco de antecedentes personales sobre mí, he estado usando Node durante unos 10 años y recientemente comencé a trabajar en Deno. Ha sido una experiencia de aprendizaje tratar de cambiar entre estos dos entornos. Espero que esta charla pueda ayudar a alguien más que esté en mi situación al hacer la transición a Deno. Un poco de antecedentes sobre ambos entornos de ejecución. Ambos son entornos de ejecución de JavaScript y están construidos sobre el motor V8. Node.js ha estado presente durante mucho más tiempo, desde alrededor de 2009, y luego Deno salió unos 10 años después. Lo interesante de Node.js es que es anterior a gran parte de lo que consideramos como JavaScript moderno. Por ejemplo, todavía admite CommonJS, aunque tiene módulos ES. Aún tiene sus antiguas API de devolución de llamada, aunque ahora tiene soporte para muchas API basadas en promesas. Históricamente, Node también ha adoptado un enfoque de delegar todo al usuario. La idea era que el núcleo fuera mínimo y que el usuario implementara módulos de NPM para muchas otras funcionalidades. Diría que Deno ha adoptado un enfoque diferente, donde incluye muchas más funcionalidades. Tiene una cadena de herramientas integrada y muchas otras cosas, de las cuales hablaré más adelante en estas diapositivas. Otra cosa es que Node.js tiene un ecosistema enorme con mucho código heredado. Esto puede ser bueno y malo, tener un ecosistema enorme es bueno. Pero tener que mantener tanto código heredado puede ralentizar el progreso y dificultar la capacidad de Node de cumplir con los estándares, de lo cual hablaré más adelante en las diapositivas.

2. Línea de tiempo de Deno, DenoDeploy y Crecimiento

Short description:

La línea de tiempo de Deno, el lanzamiento de Deno 1.0.0, el anuncio de la empresa Deno y la introducción de DenoDeploy. DenoDeploy es una máquina virtual de JavaScript distribuida globalmente para implementación en la nube. El crecimiento de Deno en términos de estrellas en GitHub en comparación con Node.js. A continuación, se discutirán las tecnologías principales de los dos proyectos.

Entonces, la línea de tiempo de Deno se muestra aproximadamente aquí. En junio de 2018, Deno se presentó por primera vez en JS Conf EU. Más tarde ese mismo año, en agosto, se lanzó Deno 0.1.0 y se reescribió en Rust. Inicialmente, las partes nativas de Deno estaban escritas en Golang y luego se trasladaron a Rust debido a preocupaciones sobre tener múltiples recolectores de basura ejecutándose en el mismo proceso.

Luego, en mayo de 2020, finalmente se lanzó Deno 1.0.0. En marzo de 2021, se anunció la empresa Deno. Esto es bueno porque tener una empresa respaldando un proyecto realmente puede ayudar, ya que se puede establecer una hoja de ruta, asignar trabajadores para trabajar en cosas específicas y tener un mejor control sobre cómo se desarrollará el proyecto. Por otro lado, Node.js es administrado casi en su totalidad por voluntarios. En el lado de Node, no podemos controlar quién trabajará en qué. No podemos decirles a los voluntarios que dediquen su tiempo a ciertas características. Incluso hemos tenido iniciativas como el Grupo de Trabajo de Evaluación de Rendimiento de Node, que está haciendo un trabajo muy útil, pero tuvieron que ser cerradas porque en ese momento no había nadie trabajando en ellas. En mi opinión, tener una empresa respaldando el proyecto es enorme.

Luego, en junio de 2021, se anunció DenoDeploy. DenoDeploy es una máquina virtual muy similar al proyecto de código abierto Deno, excepto que está destinada a ser implementada en la nube. Es más o menos una máquina virtual de JavaScript distribuida globalmente que te permite ejecutar programas de JavaScript en el borde de todo el mundo. Actualmente, se admiten 32 ubicaciones de borde diferentes y constantemente estamos agregando más. Es bueno porque puedes escribir tu código y tenerlo implementado en menos de 10 segundos a nivel global. Y en el tercer trimestre de este año, nuestro objetivo es lograr que DenoDeploy esté disponible para el público en general. Actualmente, todavía está en una versión beta pública.

Quería hablar rápidamente sobre el crecimiento aquí. Este gráfico muestra las estrellas en GitHub para la CLI de Deno y Node.js. El gráfico solo se genera hasta alrededor de 2015, aunque Node se remonta a 2009. Por lo tanto, la flecha que se muestra allí debería ser más ancha. Las estrellas en GitHub son una métrica de proxy para la adopción. Cualquiera puede marcar con estrella un repositorio de GitHub sin necesariamente usar el proyecto. Pero tenemos algunas métricas internas que indican que este crecimiento es real y no solo algo superficial en GitHub. Creo que, en base a la diferencia de 10 años en la edad de los dos proyectos, la diferencia en las estrellas es algo que vale la pena destacar. A continuación, quiero hablar sobre las tecnologías principales que se encuentran en los dos proyectos.

3. Arquitectura de Deno y Node.js

Short description:

Tanto Deno como Node.js son entornos de ejecución de JavaScript construidos sobre V8. Sin embargo, Deno está escrito en Rust, lo que ofrece seguridad de memoria y otras ventajas sobre C++. Esta elección de lenguaje influye en las dependencias del proyecto.

Como mencioné anteriormente, ambos proyectos son entornos de ejecución de JavaScript construidos sobre V8, pero ahí es donde terminan las similitudes arquitectónicas. Deno, su lenguaje nativo, está escrito en Rust, mientras que Node.js está escrito en C++, lo que facilita su integración con V8, ya que V8 también es un proyecto en C++. Rust es el nuevo lenguaje de moda y ofrece características como seguridad de memoria y otras que lenguajes como C++ no tienen. Es realmente agradable poder trabajar en Rust, pero también dicta cómo se verán algunas de las otras dependencias en el proyecto.

4. Un Vistazo más de cerca a la Arquitectura de Deno

Short description:

Node.js utiliza LibUV para E/S asíncrona y el bucle de eventos, OpenSSL para encriptación y LLHTTP para solicitudes HTTP. Deno utiliza Tokyo para E/S asíncrona, RustTLS para encriptación y Typer y Requests para solicitudes HTTP. La arquitectura de Deno incluye V8 envuelto en Rusty V8, que aísla el código C++ de V8 del resto del código Rust de Deno. Rusty V8 también permite enviar V8 precompilados. DenoOps proporciona una API para interactuar con el aislamiento y el tiempo de ejecución. Deno deploy se basa en paquetes de código abierto pero tiene un tiempo de ejecución ligeramente diferente para implementaciones en la nube.

Por ejemplo, Node.js utiliza LibUV para su E/S asíncrona y bucle de eventos, mientras que Deno utiliza Tokyo. Node.js también utiliza OpenSSL, mientras que Deno utiliza un proyecto llamado RustTLS. En el lado de HTTP, Node.js utiliza un proyecto llamado LLHTTP, mientras que Deno utiliza un par de proyectos, Typer y Requests, dependiendo de si estás en el lado del cliente o del servidor. Y luego, a nivel de DNS, tenemos TrustDNS y Deno frente a C-ARIES y Node.js.

Si nos fijamos más de cerca en la arquitectura de Deno, podemos ver aquí que tenemos el proyecto V8 envuelto en algo llamado Rusty V8. Rusty V8 son las uniones de Rust a V8. Esto es lo que aísla el código C++ de V8 de todo el otro código de Rust que está dentro de Deno. Todo lo que está fuera de V8 estará en Rust. Rusty V8 también te permite enviar V8 precompilados para que no tengas que compilarlo en tu máquina desde el código fuente, lo cual puede llevar mucho tiempo. Y luego hay algo más dentro de la biblioteca principal de Deno llamado DenoOps, que proporciona una API para interactuar con el aislamiento y el tiempo de ejecución subyacente. Todo esto está envuelto en el paquete principal de Deno. Todos estos paquetes están disponibles para que puedas tomarlos y combinarlos y crear tu propio tiempo de ejecución si realmente quieres hacerlo. Mencioné Deno deploy anteriormente. En realidad, se basa en todos los paquetes de código abierto, pero lo hace de una manera en la que el tiempo de ejecución es ligeramente diferente porque cuando ejecutas tu CLI localmente en comparación con algo que se ejecuta en la nube, habrá diferentes requisitos. Y tener un enfoque modular como este te permite aprovechar la reutilización de código mientras tienes diferentes tiempos de ejecución.

5. Deno y el Tiempo de Ejecución de Deno

Short description:

El proyecto principal es un tiempo de ejecución JS mínimo envuelto en el tiempo de ejecución de Deno, que es un tiempo de ejecución de JavaScript más completo. Incluye el núcleo, Tokyo para E/S asíncrona y otras cajas que implementan varias APIs como DenoFetch, DenoCrypto y DenoWeb.

Entonces, el proyecto principal es una especie de tiempo de ejecución JS mínimo, pero probablemente no algo que realmente quieras usar. Luego, el núcleo se envuelve en otra caja llamada el tiempo de ejecución de Deno. Por lo tanto, el tiempo de ejecución de Deno es un tiempo de ejecución de JavaScript mucho más completo. Es más divertido interactuar con él. Incluye el núcleo, incluye Tokyo para la E/S asíncrona. También incluye varias otras cajas que implementan varias APIs. Algunas de ellas se muestran aquí. DenoFetch se utiliza para implementar la API Fetch, DenoCrypto realiza operaciones criptográficas, DenoWeb es para una gran compatibilidad con la plataforma web, y así sucesivamente.

6. Deno CLI y Herramientas Integradas

Short description:

El Deno CLI es el ejecutable que descargas y ejecutas. Incluye el tiempo de ejecución de Deno y una herramienta integrada, proporcionando todo lo que necesitas para desarrollar y ejecutar aplicaciones Deno. Se distribuye como un único ejecutable y está disponible para Linux, macOS y Windows.

Entonces, una vez que tienes el tiempo de ejecución de Deno, vamos un paso más allá y eso es el CLI actual. Este es el ejecutable que vas a descargar y ejecutar. Deno se distribuye como un único ejecutable. Puedes obtener los paquetes desde el gestor de paquetes Rust si realmente quisieras, pero la mayoría de las personas simplemente van a descargar e instalar este ejecutable, y siempre puedes confiar en que ese ejecutable sea la forma preferida de descargar e instalar Deno.

Entonces, el CLI incluye el tiempo de ejecución, del que hablé en la diapositiva anterior, pero también incluye una herramienta integrada. Como dije antes, Deno es mucho más completo que Node.js, por lo que vas a obtener cosas como un linter, un formateador, un ejecutor de pruebas, un montón de otras cosas de serie, de las que hablaré más adelante en las diapositivas. La idea es que el CLI tenga todo lo que necesitas para desarrollar y ejecutar aplicaciones Deno. Y esto se ejecuta en Linux, macOS y Windows, y aquí tienes un enlace a la documentación de inicio si quieres seguir los pasos para descargar e instalar Deno en tu máquina.

7. Deno Biblioteca Estándar y Gestión de Dependencias

Short description:

Deno tiene una biblioteca estándar con módulos de JavaScript y TypeScript mantenidos por el equipo principal. Estos módulos son auditados, garantizados para estar actualizados y funcionar bien con Deno. Pueden tener versiones independientes y están alojados en Internet. La gestión de dependencias de Deno funciona como un navegador, admitiendo solo ESM y no CommonJS. No hay package.json ni node_modules. Deno busca y almacena en caché automáticamente el código, y para aplicaciones de producción, se recomienda deno-vendor. No hay NPM, pero deno.land/x proporciona alojamiento de paquetes. Las versiones de parches se lanzan semanalmente y las versiones menores de semver se lanzan mensualmente.

Entonces, Deno también tiene una biblioteca estándar. Estos serán módulos de JavaScript y TypeScript construidos y mantenidos por el equipo principal. Son auditados y garantizados para no estar obsoletos, no ser malware, estar mantenidos y en general, auditados para asegurarse de que funcionen bien con Deno.

Diría que estos son similares a los módulos principales de Node.js en el lado de Node, como FS, HTTP, etc. La única diferencia es que estos están fuera del repositorio principal, por lo que se pueden versionar de forma independiente, lanzar de forma independiente, aunque actualmente se lanzan cuando se lanza el tiempo de ejecución principal.

Hay muchos módulos diferentes, cosas como FS, HTTP streams, cosas que estarías acostumbrado a tener en Node, UUIDs, WASI, muchas otras cosas. Realmente no hay un gestor de paquetes para Deno, pero estos módulos están alojados en Internet, por lo que si vas a esta deno.land.std, obtendrás la última versión de la biblioteca estándar, y luego también puedes versionar estos, lo cual se recomienda como se muestra en el ejemplo en la parte inferior aquí. Entonces, si quisiera importar la función de copia de la biblioteca FS, este es un ejemplo de cómo lo haría, asegurándome también de obtener la versión 0.141.0, por lo que si hay un cambio incompatible o cualquier otra cosa a medida que la biblioteca evoluciona, te garantiza obtener una versión que sabes que funciona con tu código.

Hablando de la gestión general de dependencias, funciona de manera similar a un navegador. No hay NPM. Solo admitimos ESM, no hay soporte para CommonJS. Hay CDNs como ESM.sh donde puedes cargar módulos CommonJS y se transpilarán para que puedas importarlos desde allí. No vas a tener un archivo package.json, no va a haber un directorio node modules, no hay archivo index.js. Entonces, cuando haces un require, debes especificar el nombre del archivo y no el tipo de comportamiento mágico del índice.

Entonces, si alguna vez has usado algo como Rust, siento que Deno es algo similar en el hecho de que, cuando ejecutas tu código, realmente buscará el código. Lo almacenará en caché localmente para que no tengas que seguir instalándolo. Incluso puedes hacer algo de trabajo desde un avión si es necesario. Y lo compilará automáticamente por ti. Entonces, especialmente si estás descargando TypeScript, debe ser transpilado y demás. Pero Deno hace todas estas cosas por ti detrás de escena. Y para aplicaciones de producción, recomendamos que uses un comando llamado deno-vendor, que básicamente descargará todas tus dependencias localmente. Y luego puedes agregarlas al control de origen o administrarlas como quieras en lugar de intentar instalar cosas en el momento de implementación en producción. Y como dije, no hay NPM, pero hay alojamiento de paquetes en un sitio llamado deno.land slash x. Aquí todavía estoy mostrando el ejemplo de la diapositiva anterior. Pero si reemplazas esa parte std de la URL con x, estarías usando, supongo, el equivalente de Deno de NPM. Y también hay una interfaz web. Entonces puedes navegar allí y ver todos los diferentes módulos de terceros que las personas han creado y subido. Hay un calendario de lanzamiento. Las versiones de parches se lanzan semanalmente. Las versiones menores de semver se lanzan mensualmente.

8. Deno Hello World and Tooling

Short description:

Estas versiones generalmente ocurren los jueves. Aún no hay una cadencia de lanzamiento principal de Semver como la que tiene Node.js, y aún no hay un programa LTS como el que tiene Node.js, pero creo que esas cosas vendrán a medida que el proyecto madure cada vez más. Quería echar un vistazo rápido a una aplicación de Hola Mundo. Entonces, lo que estoy haciendo es importar la función serve del módulo de la biblioteca estándar HTTP de Deno, y luego crear un controlador que la función serve utiliza cada vez que recibe una solicitud. Algunas características destacadas de Deno son el enfoque en la compatibilidad con la plataforma web, la cadena de herramientas integrada, el soporte para TypeScript, el sistema de permisos y el modo de compatibilidad con el código de Node.js. Deno prefiere las API de la plataforma web cuando es posible en lugar de crear las suyas propias. Deno ha admitido las API de la plataforma web desde la versión 1, mientras que el soporte de Node.js no cumple completamente con las especificaciones. Deno tiene una variedad de herramientas integradas, incluido Deno lint para el linting.

Estas versiones generalmente ocurren los jueves. No hay una cadencia de lanzamiento principal de Semver como Node.js tiene, y aún no hay un programa LTS como Node.js tiene, pero creo que esas cosas vendrán a medida que el proyecto madure cada vez más. Entonces, quería echar un vistazo rápido a una aplicación de Hola Mundo. Esto es solo unas pocas líneas de código y puedes ejecutar un servidor HTTP completo. Lo que estoy haciendo es importar la función serve del módulo de la biblioteca estándar HTTP de Deno, y luego crear un controlador que la función serve utiliza cada vez que recibe una solicitud. Aquí puedes ver que tenemos la solicitud como parámetro de entrada, está precedida por un guion bajo porque en realidad no la estamos utilizando. Luego, esta función devolverá una respuesta. Y todo lo que estamos devolviendo es un Hola Mundo muy básico, y luego llamamos a la función serve. Cuando llamamos a serve, imprimirá en la consola en qué puerto está escuchando. Creo que es 8000 de forma predeterminada. Y luego el comando aquí, denorun, allow net server.ts, es todo lo que necesitas para ejecutar esto. Hablaré sobre qué es allow net en un segundo.Entonces, algunas características destacadas de Deno son el enfoque en la compatibilidad con la plataforma web, la cadena de herramientas integrada, como mencioné anteriormente, el soporte para TypeScript se proporciona de forma predeterminada. Hay un sistema de permisos y también hay un modo de compatibilidad real para el código de Node.js, del cual hablaré en unas pocas diapositivas aquí.En cuanto a la compatibilidad con la plataforma web, Deno casi siempre, diría yo, prefiere las API de la plataforma web cuando es posible en lugar de crear las suyas propias. Tengo una lista de algunas de las API de la plataforma web que Deno admite aquí. En realidad, hay incluso más que esto, pero no cabrían bien en una diapositiva. Y luego, a la derecha, aquí, tengo una captura de pantalla de las tablas de compatibilidad web de MDN. Esta en particular es para set timeout. Y puedes ver en la parte derecha aquí, las dos últimas columnas son Deno y Node.js. Puedes ver que Deno ha admitido esto desde la versión 1. Node.js admite set timeout, obviamente, pero no cumple realmente con las especificaciones. Devuelve un objeto de tiempo de espera en lugar de un ID de tiempo de espera. No admite pasar una cadena de código y diferentes cosas como esas. La compatibilidad con la plataforma web es uno de los principales principios de diseño de Deno y es donde realmente brilla.Comparaciones de herramientas. Hay muchas herramientas integradas en Deno. Puedes ejecutar deno help para ver una lista de todos los subcomandos. Aquí tengo una comparación de algunas de las más comunes. Por ejemplo, el linter, hay Deno lint en lugar de instalar ES lint.

9. Deno Tooling and Permission System

Short description:

Al igual que Prettier, NVM, todas estas cosas están integradas en Deno. TypeScript es compatible de forma predeterminada y el compilador de TypeScript está incluido en el binario de Deno. SWC, el compilador web rápido, también está integrado en el ejecutable. El sistema de permisos de Deno está bloqueado por defecto, pero puedes usar banderas de CLI para otorgar permisos específicos. Deno te solicitará en tiempo de ejecución que permitas permisos que no se hayan otorgado explícitamente.

Al igual que Prettier, NVM, todas estas cosas están integradas en Deno. Con la excepción del ejecutor de pruebas, que Node sí tiene uno incorporado. Pero solo está en la última versión de Node. Creo que Node está empezando a incluir más cosas de serie. Pero por ahora, esto es más o menos cómo se ve el panorama de herramientas.

TypeScript, como mencioné, es compatible de forma predeterminada. El compilador de TypeScript está incluido en el binario de Deno. Y luego SWC, que es el compilador web rápido. Es una herramienta de JS y TypeScript escrita en Rust. Se supone que es 20 veces más rápido para aplicaciones de un solo hilo que Babel. Y creo que es como 70 veces más rápido para aplicaciones de varios hilos. Pero sí, todas estas cosas están integradas en el ejecutable. Lo usamos para transpilar y empaquetar, y cosas así. Puedes configurar el compilador de TypeScript pasando un archivo de configuración desde la CLI. Normalmente no es necesario, así que no lo recomendamos realmente. Es bueno tener una experiencia lista para usar que simplemente funciona. El sistema de permisos de Deno, por defecto, está bloqueado. No puede acceder al mundo exterior. Por lo tanto, no puede acceder al sistema de archivos, a la red, cosas así. Aquí tenemos una lista de banderas de CLI a la derecha, que puedes usar para otorgar permisos. Entonces, si quieres acceder a las variables de entorno, HR time. El tiempo de alta resolución está detrás de una bandera de CLI porque puede exponerte a ataques de temporización y cosas así. Net para acceder a la red, FFI si quieres cargar bibliotecas dinámicas. Read y write para leer y escribir en el sistema de archivos. Run te permite ejecutar procesos secundarios. Y si solo estás probando y quieres otorgar todos los permisos, entonces tienes el --allow-all, que se aliasa como -a. Por lo tanto, debes otorgar explícitamente estos permisos según sea necesario. Si algo no se otorga, Deno te solicitará que lo permitas en tiempo de ejecución.

10. Permisos de Deno y Compatibilidad con Node

Short description:

Deno solicita permisos en tiempo de ejecución. Los subprocesos y FFI no están restringidos. Se pueden configurar banderas para un acceso específico. La compatibilidad con Node se puede lograr con la bandera --compat y permitir la lectura para CommonJS. Los enlaces importantes incluyen la documentación, la biblioteca estándar, los módulos de terceros, el código fuente, la comunidad de Discord y Deno Deploy.

y preguntar en runtime si quieres permitirlo. Una cosa a tener en cuenta es que si estás ejecutando subprocesos o FFI, estas cosas no estarán restringidas utilizando el mismo entorno aislado. Así que hazlo con precaución. Y luego algunas de estas banderas se pueden configurar aún más. Entonces, si quiero leer desde el sistema de archivos, pero solo quiero permitir el acceso a un directorio específico, puedo hacerlo. O si quiero ejecutar un subproceso, pero solo permitir ejecutar un subproceso específico, también puedo hacerlo. Estos permisos se aplican a todo el proceso y no a los modules individuales. Entonces, compatibilidad con Node. Tomé un fragmento de los documentos aquí. Básicamente muestra cómo puedes crear tu propia función require y luego usar esa función require como lo harías en Node.js. Entonces, no hay require en Deno por defecto, pero puedes hacer esto usando la bandera --compat. También tienes que especificar --unstable porque esto aún se considera una característica inestable. Y si quieres usar CommonJS, que es lo que require es entonces también tienes que especificar allow read. Luego tengo una serie de enlaces que creo que son importantes o cosas a las que las personas pueden acceder como referencias y consultar. El primer enlace es al sitio de documentación principal el segundo enlace es para la biblioteca estándar de Deno si quieres navegar por ella los módulos de terceros, el Deno Land slash x que mencioné anteriormente está allí. El código fuente de la biblioteca estándar y el CLI están incluidos en Deno Land slash Deno STD y Deno Land slash Deno. Hay un community discord que es bastante activo así que tengo aquí el enlace si quieres unirte a eso y luego Deno Deploy el producto que también es un runtime diferente y la VM distribuida globalmente todas las cosas que mencioné anteriormente. Actualmente en beta hay un enlace aquí si quieres probarlo. Tiene un nivel gratuito bastante generoso así que te animo a jugar con él creo que es un proyecto muy interesante pero sí, eso es todo lo que tenía así que si tienes alguna pregunta no dudes en contactarme en Twitter, GitHub o lo que sea. Mi nombre de usuario está aquí y gracias de nuevo por venir a mi charla.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2022React Advanced Conference 2022
29 min
Understanding React’s Fiber Architecture
Top Content
We've heard a lot about React's Fiber Architecture, but it feels like few of us understand it in depth (or have the time to). In this talk, Tejas will go over his best attempt at understanding Fiber (reviewed by other experts), and present it in an 'explain-like-I'm-five years old' way.
Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
Do you know what’s really going on in your node_modules folder? Software supply chain attacks have exploded over the past 12 months and they’re only accelerating in 2022 and beyond. We’ll dive into examples of recent supply chain attacks and what concrete steps you can take to protect your team from this emerging threat.
You can check the slides for Feross' talk here.
Node Congress 2022Node Congress 2022
34 min
Out of the Box Node.js Diagnostics
In the early years of Node.js, diagnostics and debugging were considerable pain points. Modern versions of Node have improved considerably in these areas. Features like async stack traces, heap snapshots, and CPU profiling no longer require third party modules or modifications to application source code. This talk explores the various diagnostic features that have recently been built into Node.
You can check the slides for Colin's talk here. 
JSNation 2023JSNation 2023
22 min
ESM Loaders: Enhancing Module Loading in Node.js
Native ESM support for Node.js was a chance for the Node.js project to release official support for enhancing the module loading experience, to enable use cases such as on the fly transpilation, module stubbing, support for loading modules from HTTP, and monitoring.
While CommonJS has support for all this, it was never officially supported and was done by hacking into the Node.js runtime code. ESM has fixed all this. We will look at the architecture of ESM loading in Node.js, and discuss the loader API that supports enhancing it. We will also look into advanced features such as loader chaining and off thread execution.

Workshops on related topic

React Summit 2022React Summit 2022
117 min
Detox 101: How to write stable end-to-end tests for your React Native application
Top Content
WorkshopFree
Compared to unit testing, end-to-end testing aims to interact with your application just like a real user. And as we all know it can be pretty challenging. Especially when we talk about Mobile applications.
Tests rely on many conditions and are considered to be slow and flaky. On the other hand - end-to-end tests can give the greatest confidence that your app is working. And if done right - can become an amazing tool for boosting developer velocity.
Detox is a gray-box end-to-end testing framework for mobile apps. Developed by Wix to solve the problem of slowness and flakiness and used by React Native itself as its E2E testing tool.
Join me on this workshop to learn how to make your mobile end-to-end tests with Detox rock.
Prerequisites- iOS/Android: MacOS Catalina or newer- Android only: Linux- Install before the workshop
Node Congress 2023Node Congress 2023
109 min
Node.js Masterclass
Workshop
Have you ever struggled with designing and structuring your Node.js applications? Building applications that are well organised, testable and extendable is not always easy. It can often turn out to be a lot more complicated than you expect it to be. In this live event Matteo will show you how he builds Node.js applications from scratch. You’ll learn how he approaches application design, and the philosophies that he applies to create modular, maintainable and effective applications.

Level: intermediate
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
Node Congress 2023Node Congress 2023
63 min
0 to Auth in an Hour Using NodeJS SDK
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.JS backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Table of contents- A quick intro to core authentication concepts- Coding- Why passwordless matters
Prerequisites- IDE for your choice- Node 18 or higher
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
React Summit 2022React Summit 2022
164 min
GraphQL - From Zero to Hero in 3 hours
Workshop
How to build a fullstack GraphQL application (Postgres + NestJs + React) in the shortest time possible.
All beginnings are hard. Even harder than choosing the technology is often developing a suitable architecture. Especially when it comes to GraphQL.
In this workshop, you will get a variety of best practices that you would normally have to work through over a number of projects - all in just three hours.
If you've always wanted to participate in a hackathon to get something up and running in the shortest amount of time - then take an active part in this workshop, and participate in the thought processes of the trainer.