Conoce Deno el sustituto de NodeJs



Ryan Dahl (el inventor de Node.js) dio una charla en JSConf llamada "10 cosas de las que me arrepiento de Node.js". Si se arrepiente de varias decisiones de diseño, tomó Node.js. Durante la mitad de su charla, nos mostró un prototipo experimental llamado Deno que tenía como objetivo solucionar los problemas de Node.js.

Deno ha alcanzado v0.1 y creo que está en el camino correcto para reemplazar Node.js en el futuro.

¿Cuáles son los principales problemas con Node.js?



Cualquier programa puede escribir en el sistema de archivos y en la red. Esto podría ser un problema de seguridad, especialmente al instalar paquetes no confiables desde npm. El incidente crossenv es un ejemplo. Si crossenvhad no hubiera tenido permisos de escritura, esto no habría sucedido.

API asíncronas mal envejecidas



Las promesas se incluyeron en 2009, pero se eliminaron en febrero de 2010 de Node.js. Esto ha provocado que muchas bibliotecas todavía usen devoluciones de llamada como forma de administrar el código asíncrono.

El sistema de compilación (GYP)



Usar GYP para construir un módulo que se enlaza a una biblioteca de C es un gran problema. Para tener un DX sano, tendrás que usar node-gyp (una capa encima de GYP) y tal vez otras capas (como nan). Lo he intentado solo con un pequeño proyecto y sí, es un dolor.

El sistema de módulos y npm



El principal problema aquí es que el sistema de módulos no es compatible con los navegadores, por lo que nuestro código no es completamente isomorfo. Esto se debe principalmente a dos motivos: almacenar dependencias en node_modules y tener un package.json.

¿Qué es Deno?



“Deno es un tiempo de ejecución de TypeScript seguro construido en V8”

Dado que Typescript es un superconjunto de Javascript, también es un tiempo de ejecución para Javascript.

Deno es un nuevo proyecto creado por Ryan Dahl (el inventor de Node.js) que tiene como objetivo corregir los errores de diseño de Node.js que he mencionado anteriormente.

Las mejores características de Deno



Seguridad



Por defecto, Deno no permite realizar acciones delicadas, como leer variables de entorno o escribir en el sistema de archivos. Necesitamos pasar banderas específicas.

El proceso de Deno se ejecuta en un modo "sin privilegios" de forma predeterminada, y para acceder a cosas delicadas como las variables de entorno

Todo el código se ejecuta sin permisos de escritura, entorno y red del sistema de archivos. Para permitir esto debemos invocar la demo con --allow-write y --allow-net.

Todas las comunicaciones entre el proceso privilegiado de Deno y v8 son por paso de mensajes (previamente escrito en Go, ahora migrado a Rust). Esto permite un solo punto auditable para todas las comunicaciones.

Sistema de módulos



No package.json, no node_modules. Los archivos de origen se pueden importar mediante una ruta relativa, una ruta de acceso absoluta o una URL completa de un archivo de origen:


import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"
import { log } from "./util.ts"

Todos los archivos de origen se almacenan en caché de forma predeterminada. Si necesitamos actualizar nuestras dependencias, podemos usar el argumento --cargar. Esto es como el F5 de los navegadores. Soporte para TypeScript listo para usar

TypeScript
es compatible de forma predeterminada en Deno. Sip. No hay trampas. Sin ninguna configuración.


H2
H3
H4
3 columns
2 columns
1 column
1 Comment
Ecency