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

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

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.

This talk has been presented at JSNation 2022, check out the latest edition of this JavaScript Conference.

FAQ

Deno es un entorno de ejecución de JavaScript y TypeScript que utiliza Rust en su implementación, en comparación con Node.js que está basado en C++. Deno incluye una cadena de herramientas integrada y enfatiza la seguridad. Node.js, por otro lado, tiene un ecosistema más grande y establecido, pero con código heredado y un manejo diferente de dependencias y módulos.

Deno 1.0.0 fue lanzado en mayo de 2020.

Deno ofrece una cadena de herramientas integrada, un sistema de permisos para mejorar la seguridad, compatibilidad con TypeScript por defecto y un enfoque en la compatibilidad con las APIs de plataforma web. Además, es importante mencionar que Deno se distribuye como un único ejecutable.

Deno maneja las dependencias de manera similar a un navegador. No utiliza NPM ni un archivo package.json, sino que carga módulos directamente desde URLs, que pueden ser versionados para mayor control. Las dependencias se pueden precargar y almacenar en caché localmente usando el comando 'deno-vendor'.

Deno Deploy es una plataforma como servicio que permite ejecutar aplicaciones JavaScript y TypeScript en la nube, distribuidas globalmente. Se basa en la infraestructura de Deno y permite despliegues rápidos y eficientes con soporte en múltiples ubicaciones alrededor del mundo.

Deno intenta adherirse a las APIs de la plataforma web siempre que sea posible, lo que incluye funciones como 'setTimeout'. Node.js, aunque soporta muchas APIs web, no siempre cumple con las especificaciones estándar, lo que puede llevar a diferencias en la implementación.

Deno tiene un modelo de seguridad más restrictivo por defecto, donde el acceso a recursos del sistema como archivos, red y entorno de ejecución debe ser explícitamente permitido mediante flags de la línea de comandos. Esto contrasta con Node.js, donde estos accesos son permitidos por defecto.

Deno puede ejecutar código de Node.js a través de un modo de compatibilidad que requiere habilitar las flags '--compat' y '--unstable'. Esto permite utilizar la función 'require' y módulos CommonJS, típicos de Node.js.

Colin Ihrig
Colin Ihrig
22 min
20 Jun, 2022

Comments

Sign in or register to post your comment.
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.

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

Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
Cargadores ESM: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
Cargadores ESM: Mejorando la carga de módulos en Node.js
Top Content
ESM Loaders enhance module loading in Node.js by resolving URLs and reading files from the disk. Module loaders can override modules and change how they are found. Enhancing the loading phase involves loading directly from HTTP and loading TypeScript code without building it. The loader in the module URL handles URL resolution and uses fetch to fetch the source code. Loaders can be chained together to load from different sources, transform source code, and resolve URLs differently. The future of module loading enhancements is promising and simple to use.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
Diagnostics de Node.js listos para usar
Node Congress 2022Node Congress 2022
34 min
Diagnostics de Node.js listos para usar
This talk covers various techniques for getting diagnostics information out of Node.js, including debugging with environment variables, handling warnings and deprecations, tracing uncaught exceptions and process exit, using the v8 inspector and dev tools, and generating diagnostic reports. The speaker also mentions areas for improvement in Node.js diagnostics and provides resources for learning and contributing. Additionally, the responsibilities of the Technical Steering Committee in the TS community are discussed.
El Estado de Node.js 2025
JSNation 2025JSNation 2025
30 min
El Estado de Node.js 2025
The speaker covers a wide range of topics related to Node.js, including its resilience, popularity, and significance in the tech ecosystem. They discuss Node.js version support, organization activity, development updates, enhancements, and security updates. Node.js relies heavily on volunteers for governance and contribution. The speaker introduces an application server for Node.js enabling PHP integration. Insights are shared on Node.js downloads, infrastructure challenges, software maintenance, and the importance of update schedules for security.

Workshops on related topic

Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
Workshop
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source como nuestra oferta en la Nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). 
En esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
Workshop
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones
Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.
Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña
Requisitos previos- IDE de tu elección- Node 18 o superior
GraphQL: De Cero a Héroe en 3 horas
React Summit 2022React Summit 2022
164 min
GraphQL: De Cero a Héroe en 3 horas
Workshop
Pawel Sawicki
Pawel Sawicki
Cómo construir una aplicación GraphQL fullstack (Postgres + NestJs + React) en el menor tiempo posible.
Todos los comienzos son difíciles. Incluso más difícil que elegir la tecnología es desarrollar una arquitectura adecuada. Especialmente cuando se trata de GraphQL.
En este masterclass, obtendrás una variedad de mejores prácticas que normalmente tendrías que trabajar en varios proyectos, todo en solo tres horas.
Siempre has querido participar en un hackathon para poner algo en funcionamiento en el menor tiempo posible, entonces participa activamente en este masterclass y únete a los procesos de pensamiento del instructor.