Node.js puede estar bien establecido, pero no pase por alto Deno, un marco similar del mismo desarrollador.

Node.js es un marco de ejecución prolongada que le permite escribir código del lado del servidor en JavaScript. Lanzado originalmente en 2009, el marco ha experimentado un crecimiento considerable y una explosión en el uso en los últimos años.

Deno tiene diferencias en el estilo de formato, la sintaxis de importación y la gestión de paquetes, pero el mismo ingeniero creó estos marcos de la competencia en el mismo motor.

Hoy, Deno ha existido durante el tiempo suficiente para ganarse un lugar en las pilas de muchos desarrolladores. Si está buscando comenzar un nuevo proyecto de JavaScript, es posible que se pregunte cuál es la opción correcta.

Funciones de nodo y deno

Casi nueve años después del lanzamiento de Node, su desarrollador, Ryan Dahl, anunció un nuevo proyecto: Deno. Donde Node fue una vez la única opción para JavaScript del lado del servidor, Deno nos ha brindado una alternativa.

instagram viewer

Node.js y Deno son bastante similares en muchos aspectos. La mayoría de las diferencias entre los dos ocurren bajo el capó. Donde Node se ejecuta en el motor de JavaScript V8, Deno se ejecuta sobre un motor escrito a medida construido en Rust con un fuerte enfoque en el rendimiento.

La mayoría de las principales diferencias entre los dos se basan en las características que admite cada idioma. Los módulos, el linting, el mecanografiado y la gestión de paquetes se manejan de manera muy diferente entre los dos.

Importaciones de módulos: CommonJS vs. ES

Node.js usa módulos CommonJS de forma predeterminada con la sintaxis require(). Node le permite cambiar esto alterando sus archivos de configuración para usar módulos ECMAScript con la sintaxis import() en su lugar si así lo desean.

// Esta es una importación de módulo CommonJS válida en Node.js
variable _ = requerir("lodash");

// Esta es una importación de módulo ECMAScript válida en Node.js
importar _ de'lodash';

Existe cierta interoperabilidad limitada entre los dos tipos de módulos ES que se cargan y algunos módulos ECMAScript se pueden incluir mediante la sintaxis require(). Cada tipo de importación maneja los módulos de forma ligeramente diferente, pero cualquiera de los dos funcionará en la mayoría de los casos.

Esto le permite elegir su metodología preferida para incluir módulos externos al crear un proyecto.

Deno adopta un enfoque diferente cuando se trata de incluir módulos externos en un proyecto. Deno usa la sintaxis include() para todos los módulos; sin embargo, a diferencia de la importación de Node, los módulos importados en Deno pueden provenir de cualquier ubicación. Estas ubicaciones pueden incluso incluir redes de entrega de contenido (CDN) remotas.

// Esta es una declaración de importación válida en Deno
importar" https://deno.land/x/[email protected]/dist/lodash.js";

Esto le permite importar dependencias desde cualquier ubicación, local o remota, lo que ofrece una flexibilidad mucho mayor. Si prefiere trabajar con la sintaxis requerida tradicional de Node.js, puede escribir su propia función de solicitud de polyfill en Deno como solución alternativa.

Compatibilidad con código TypeScript

TypeScript ha visto un crecimiento creciente en popularidad en los últimos años, sin signos de desaceleración en el corto plazo. Llevar la dinámica del código con seguridad de tipos a JavaScript ha demostrado ser un esfuerzo tremendamente exitoso.

Hoy en día, configurar un nuevo proyecto de TypeScript o convertir un proyecto de Node.js existente a TypeScript es simple, aunque lleva algo de tiempo.

Agregar compatibilidad con TypeScript se ha vuelto lo suficientemente popular como para que la mayoría de los marcos modernos ahora tengan alguna forma de compatibilidad con TypeScript. Angular abrió el camino, con soporte TypeScript listo para usar. Hoy, incluso React tiene métodos para configurar la compatibilidad con TypeScript.

Deno fue diseñado con soporte TypeScript incluido para ayudar a mejorar su productividad. Con soporte TypeScript listo para usar, Deno carece incluso de la configuración mínima requerida por Node.js para establecer el desarrollo de código JavaScript escrito.

Si le encanta TypeScript, puede comenzar rápida y fácilmente con el soporte de Deno, pero es posible que se pierda algunas de las bibliotecas estándar de Node.js. Si bien Deno ofrece una configuración más rápida, la falta de un ecosistema desarrollado puede obstaculizar su proceso de creación.

Linting para generar código más limpio

Node.js tiene una amplia variedad de linters para que elijas. Hay muchas opciones bien desarrolladas que puede instalar y configurar rápida y fácilmente. Sin embargo, al igual que en el caso de TypeScript, deberá hacer un poco de trabajo preliminar para comenzar con su linter de elección.

Deno tomó una ruta ligeramente diferente en el formato de código, ya que viene con su propia solución de pelusa integrada para archivos .js, .ts y .md. Ejecutar el comando "deno fmt" formateará automáticamente cualquier archivo en el directorio de trabajo actual.

Si no eres fanático del linter predeterminado, hay una opción para instalar y ejecutar el sistema de formateo que elijas, tal como lo harías con Node. Cambiar de sistema es simple, ya que el linter de Deno se ejecuta a través de un comando externo y no como parte de la canalización de compilación predeterminada.

Si está considerando cambiar el linter de Deno por un nuevo sistema, debe tener en cuenta los posibles problemas de compatibilidad y tenerlos en cuenta. La mayoría de los linters de JavaScript requerirán una instalación de Node para ejecutarse, incluso si no es el sistema en el que se está ejecutando el proyecto que se está formateando.

Gestión de paquetes

El administrador de paquetes de nodos (npm) es muy conocido entre los desarrolladores modernos. Basándose en el éxito de sistemas similares como Python's Pip y Ruby's RubyGems, npm rápidamente ganó popularidad.

Las preocupaciones persistentes conducen al desarrollo de administradores competitivos, como pNPm e Yarn. Hay algunas situaciones en las que incluso puede optar por instalar y utilizar múltiples administradores de paquetes con Node.

Hoy en día, si elige desarrollar en Node.js, tiene muchas opciones en lo que respecta a la administración de paquetes. Node cuenta con un ecosistema próspero con muchas opciones para instalar paquetes. Actualmente hay más de 1,3 millones en el registro principal de npm.

Npm le permite publicar sus propios paquetes, lo que lleva a una biblioteca asombrosamente grande.

Deno adoptó un enfoque completamente diferente para la gestión de paquetes. No tiene ni requiere un sistema de gestión de paquetes. En cambio, Deno permite la importación directa de bibliotecas externas no solo desde el sistema del desarrollador, sino también desde cualquier ubicación que acepte solicitudes HTTP.

Esto le permite importar bibliotecas desde el repositorio de Deno, o cualquier CDN en línea, directamente desde su base de código.

El registro oficial de paquetes de Deno no está tan desarrollado como el de Node, gracias a la ventaja inicial de casi nueve años de Node. La capacidad de importar bibliotecas desde cualquier lugar evita que sufra las consecuencias de un ecosistema que aún no ha tenido la oportunidad de crecer a su tamaño completo.

Participación de la comunidad en Node y Deno

Lanzado originalmente en 2009 por Ryan Dahl, Node ha tenido mucho tiempo para que la comunidad de desarrolladores se involucre. Con muchos usuarios pioneros y una biblioteca considerable de paquetes almacenados en su repositorio oficial y a su disposición, el público ha tenido mucho que decir en el crecimiento de Node.js.

La plataforma en sí es completamente de código abierto, mantenida por la Fundación OpenJS y muchos colaboradores.

Deno se lanzó en 2018, casi 9 años después de Node. Fue desarrollado principalmente por Ryan Dahl para abordar las preocupaciones y los arrepentimientos que tenía con su implementación de Node. Hoy, Deno también es de código abierto bajo la licencia MIT.

Con muchos colaboradores y un repositorio propio en crecimiento, Deno ha visto mucho interés por parte de la comunidad.

Preocupaciones de rendimiento de los dos marcos

Para los codificadores interesados ​​en las diferencias de rendimiento relativo entre los dos marcos, hay poca diferencia entre los dos. El motor personalizado de Deno escrito en Rust se superpone a un marco central que sigue siendo el motor V8. En última instancia, tanto Deno como Node son comparables en casi todos los casos en cuanto a rendimiento.

Este parece ser el caso independientemente de si el código resultante se ejecuta en el servidor o en el cliente. Dado que los rendimientos de rendimiento no se tienen en cuenta en la decisión, puede elegir libremente el marco con el que se sienta más cómodo.

Ryan Dahl, el creador de ambos marcos, ofreció una variedad de razones para su creación de Deno. Si bien mencionó varios factores, desde no incorporar correctamente las promesas en muchas API hasta el sistema de compilación que eligió, el rendimiento no fue parte del proceso.

Nodo vs Deno: ¿Cuál es la elección correcta?

Debajo del capó, tanto Node.js como Deno son marcos notablemente similares. Ambos ejecutan JavaScript utilizando el motor V8 con un rendimiento y capacidades similares. Si bien existen algunas diferencias en la sintaxis, la administración de paquetes y el soporte integrado, su elección de cuál usar se basa en gran medida en sus preferencias.

Node cuenta con un ecosistema asombrosamente grande, pero Deno le permite extraer sus dependencias de cualquier fuente. En última instancia, deberá observar de cerca su propio estilo de desarrollo y determinar qué plataforma se adapta mejor a usted.