¿Puede Deno ejecutar aplicaciones y bibliotecas creadas para Node.js? ¿Cuáles son los compromisos? ¿Cómo funciona? ¿Qué sigue?
This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.
¿Puede Deno ejecutar aplicaciones y bibliotecas creadas para Node.js? ¿Cuáles son los compromisos? ¿Cómo funciona? ¿Qué sigue?
This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.
Sí, Deno puede ejecutar aplicaciones, bibliotecas y paquetes diseñados para Node.js utilizando una bandera de compatibilidad. Sin embargo, no todos los paquetes son compatibles actualmente, y algunos elementos como las APIs de Node.js que dependen de CommonJS pueden requerir configuraciones adicionales.
Deno ofrece 'ejecución segura por defecto', lo que significa que los programas no pueden acceder a recursos del sistema como el sistema de archivos o la red a menos que se otorguen permisos explícitos. Además, Deno permite especificar permisos más detallados, como limitar la lectura del sistema de archivos a directorios específicos o restringir las conexiones de red a ciertos dominios.
Deno permite importar cualquier código de terceros utilizando URLs directamente, similar a los navegadores. No utiliza un sistema de módulos basado en Node.js o CommonJS, sino que se adhiere a los módulos ES, lo que simplifica la resolución de módulos y la compatibilidad con la web.
Los desafíos incluyen la adaptación de ciertas APIs de Node.js que no son compatibles de manera directa con Deno, como las relacionadas con el manejo de temporizadores y las diferencias en la gestión de módulos (CJS frente a ESM). Además, hay un trabajo en curso para adaptar o proporcionar polyfills para módulos integrados de Node.js como TLS o ChildProcess.
Deno planea lanzar una primera versión de una capa de compatibilidad con Node.js, explorando una integración más profunda que podría incluir soporte de API de Node.js sin necesidad de modos de ejecución especiales o banderas adicionales. Además, se está trabajando en facilitar la instalación de paquetes desde npm de manera transparente.
No directamente, ya que los complementos nativos de Node.js se basan en C++, y Deno está escrito en Rust. Sin embargo, Deno está investigando integraciones como NAPI y una API de FFI para permitir cierto grado de interoperabilidad con código nativo.
DenoSTD es la biblioteca estándar de Deno, una colección de módulos escritos en TypeScript que están garantizados para funcionar con Deno. Incluye polyfills y adaptaciones necesarias para facilitar la compatibilidad con Node.js y otros entornos de ejecución.
Deno es un entorno de ejecución de línea de comandos para JavaScript y TypeScript, similar a Node.js. La principal diferencia es que Deno admite TypeScript como ciudadano de primera clase y utiliza un único ejecutable para ejecutar programas. Deno enfatiza la seguridad, limitando el acceso al sistema de archivos, variables de entorno y conexiones de internet, a menos que se permitan explícitamente.
¡Hola, amigos! Mi nombre es Bartek y soy miembro del equipo principal de Deno. Hoy vamos a hablar sobre la compatibilidad de Node.js en Deno. ¿Puede Deno ejecutar aplicaciones y bibliotecas ofrecidas para Node.js? ¿Cuáles son los compromisos? ¿Cómo funciona todo y qué sigue en nuestro plan?
¡Hola, amigos! Mi nombre es Bartek y soy miembro del equipo principal de Deno. Hoy vamos a hablar sobre la compatibilidad de Node.js en Deno. En esta charla, me gustaría darles una breve descripción de qué es Deno, y tratar de responder algunas preguntas sobre la compatibilidad con Node.
Entonces, ¿puede Deno ejecutar aplicaciones y bibliotecas ofrecidas para Node.js? ¿Cuáles son los compromisos? ¿Cómo funciona todo y qué sigue en nuestro plan? ¡Así que empecemos!
Deno uno a uno. Deno es una nueva runtime de línea de comandos para JavaScript y para TypeScript. Es similar a Node.js, que puedes ejecutar tu código JavaScript, pero la diferencia es que también admitimos TypeScript como ciudadano de primera clase. Una palabra de precaución aquí, Deno en realidad no ejecuta tu TypeScript. Solo lo transpila a JavaScript por debajo, detrás de escena, por lo que no necesitas configurar una cadena de compilación ni nada por el estilo. Deno también tiene como objetivo ser divertido y productivo. Nos gusta pensar en ello como una bolsa de bloques de LEGO.
Deno es un archivo ejecutable único que funciona en Linux, Mac y Windows. Ofrece una ejecución segura por defecto, evitando el acceso no autorizado a sistemas de archivos y conexiones a internet. Deno permite enlazar código de terceros utilizando URLs y recupera, almacena en caché, compila o transpila el código de forma transparente. Aunque Deno no es inicialmente compatible con npm, algunos usuarios encuentran la falta de soporte de npm como un obstáculo para su adopción.
Deno es un archivo ejecutable único. Este archivo es todo lo que necesitas para ejecutar cualquier programa de Deno, y siempre distribuiremos Deno de esta manera. Deno funciona en Linux, funciona en Mac y en Windows, así que dondequiera que vayas, un nuevo servidor, un nuevo portátil, lo que sea, solo necesitas ejecutar un comando para obtener Deno y estar listo para comenzar.
Deno tiene algo que nos gusta llamar ejecución segura por defecto. Lo que significa es que ninguno de tus programas puede acceder a tu sistema de archivos, tus variables de entorno, procesos patrocinadores, o incluso abrir una conexión a internet a menos que lo permitas explícitamente. En este breve ejemplo también podemos ver que puedes enlazar directamente a código de terceros y ejecutarlo incluso si no confías en este código. Así que aquí estamos ejecutando un ejemplo de DenoSTD, que es la biblioteca estándar de Deno, es un conjunto de módulos que están garantizados para funcionar con Deno, pero podría haber sido cualquier URL en el mundo que puedas imaginar, y en este caso, donde no se proporcionan banderas además de los subcomandos de ejecución, este programa no puede hacer nada en tu computadora. Pero si quieres acceder a un sistema de archivos o generar un subproceso o abrir una conexión a internet, puedes darle a Deno algunas banderas y decirle que permita que tu programa realmente haga estas cosas. Y como puedes ver aquí, algunas de estas banderas te permiten limitar aún más esto. Por ejemplo, podemos permitir que nuestro programa lea desde el sistema de archivos, pero solo desde el directorio slash tmp. O podemos decirle a tu programa que permita abrir una conexión a internet, pero solo limitada al dominio google.com.
Deno te permite enlazar cualquier código de terceros utilizando URLs. Funciona de la misma manera que en el navegador. En este ejemplo podemos ver nuestra importación de módulo ES. Estamos importando una función magenta, nuevamente de Deno STD. Esta vez lo estamos haciendo desde el módulo fmt slash colors. Por lo tanto, esta resolución de módulo es simple y compatible con los navegadores y Deno no tiene noción de módulos de node o indexJS. O en realidad, de eso se trata esta charla después de todo. Deno no depende de un servidor centralizado. Es decir, no estás explícitamente vinculado solo a npm si quieres enlazar tus paquetes o instalar nuevos paquetes o un registro privado si tienes uno. Puedes obtener código desde cualquier lugar en internet, ya sea servidores públicos o servidores privados si proporcionas cabeceras de autorización adecuadas. Deno como un runtime recupera, almacena en caché y compila este código, o lo transpila, de forma transparente en la primera ejecución. Después de la primera ejecución, el código ya está en caché, por lo que no es necesario descargarlo nuevamente. De hecho, Deno no volverá a descargar el código a menos que se lo pidas explícitamente.
Entonces, ¿por qué estamos pensando o trabajando en la compatibilidad con Node.js? Bueno, npm es posiblemente el ecosistema de paquetes más grande del mundo, y los usuarios simplemente quieren usar este ecosistema de paquetes. Cuando Deno salió por primera vez con la versión 1.0, afirmamos explícitamente que no somos compatibles con npm. Y eso estaba bien. Aquí, algunos usuarios todavía encuentran la falta de soporte para npm como un gran obstáculo para su adopción. Entonces, algunos usuarios quieren probar Deno en lugar de Node.js. Sin embargo, el costo de cambiar de un runtime a otro a menudo resulta demasiado alto para siquiera intentarlo.
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Comments