Deno ya es compatible con los módulos NPM
Hace poco se dio a conocer la noticia del lanzamiento de la nueva versión del framework Deno 1.28, el cual permite la ejecución de aplicaciones de JavaScript y TypeScript independiente que se puede usar para crear controladores que se ejecutan en el servidor.
Deno se creó para brindar a los usuarios un entorno más seguro y eliminar errores conceptuales en la arquitectura Node.js. Para mejorar la seguridad, el enlace alrededor del motor V8 está escrito en Rust, lo que evita muchas vulnerabilidades que surgen debido al manejo de memoria de bajo nivel.
Para procesar solicitudes en modo sin bloqueo, se utiliza el framework Tokio, también escrito en Rust. Tokio te permite crear aplicaciones de alto rendimiento basadas en arquitectura dirigida por eventos (Event-driven), soportando multihilo y procesando solicitudes de red en modo asíncrono.
Algunas de las características principales de Deno son las siguientes:
- Compatibilidad con el lenguaje TypeScript incorporado además de JavaScript. Para verificar los tipos y generar JavaScript, se usa el compilador TypeScript regular, lo que conduce a una caída en el rendimiento en comparación con el análisis de JavaScript en V8.
- El tiempo de ejecución viene en forma de un único ejecutable autónomo («deno»). Para ejecutar aplicaciones usando Deno, basta con descargar un archivo ejecutable para su plataforma, de unos 30 MB de tamaño, que no tiene dependencias externas y no requiere ninguna instalación especial en el sistema.
- Procesamiento eficiente en aplicaciones de solicitudes de red vía HTTP, la plataforma está diseñada para crear aplicaciones de red de alto rendimiento
- La capacidad de crear aplicaciones web universales que pueden ejecutarse tanto en Deno como en un navegador web normal
- La presencia de un conjunto estándar de módulos, cuyo uso no requiere vinculación a dependencias externas.
- Los módulos de la colección estándar se han auditado y probado adicionalmente para comprobar su compatibilidad
- El paquete incluye un sistema integrado de inspección de dependencias (comando «deno info») y una utilidad para formatear código (deno fmt)
- Todos los scripts de aplicaciones se pueden combinar en un archivo JavaScript.
Principales novedades de Deno 1.28
El cambio clave en la nueva versión es la estabilización de la compatibilidad con los paquetes alojados en el repositorio NPM, lo que permite a Deno utilizar más de 1,3 millones de módulos creados para la plataforma Node.js. Por ejemplo, las aplicaciones basadas en Deno ahora pueden usar módulos de acceso a datos persistentes como Prisma, Mongoose y MySQL, así como marcos front-end como React y Vue.
Algunos módulos NPM siguen siendo incompatibles con Deno, por ejemplo, debido a enlaces a entornos específicos de Node.js, como el archivo package.json. Tampoco es posible usar el comando «deno compile» con módulos NPM. Se planean versiones futuras para abordar estas incompatibilidades y limitaciones.
El sistema de módulo ECMAScript heredado de Deno y el modelo de módulo Web API siguen siendo los mismos, y el conocido esquema de carga basado en URL de Deno se usa para importar módulos NPM.
Usar paquetes NPM en Deno es mucho más fácil que en Node.js, porque no es necesario preinstalar módulos (los módulos se instalan cuando se inicia la aplicación por primera vez), no se usa el archivo package.json y el directorio node_modules no se usa, se usa de forma predeterminada (los módulos se almacenan en caché en el directorio compartido, pero es posible revertir el comportamiento anterior con la opción «–node-modules-dir»).
Las aplicaciones basadas en NPM conservan la capacidad de utilizar los mecanismos de control de acceso, aislamiento y activación de Deno para funciones avanzadas que afectan la seguridad. Para contrarrestar los ataques a través de dependencias cuestionables, Deno bloquea de forma predeterminada todos los intentos de acceder al sistema desde las dependencias y muestra una advertencia sobre los problemas detectados. Por ejemplo, cuando el módulo intente escribir en /usr/bin/, se mostrará una solicitud de confirmación para esta operación:
Las mejoras no relacionadas con NPM en la nueva versión incluyen la actualización del motor V8 para la versión 10.9, detección automática de archivos con bloqueos, estabilización de Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo( ) y las API de Deno. .uid(), agregando una nueva API inestable Deno.Command() para ejecutar comandos (reemplazo universal para Deno.spawn, Deno.spawnSync y Deno.spawnChild).
Finalmente cabe mencionar que al igual que Node.js, Deno usa el motor JavaScript V8, que también se usa en los navegadores basados en Chromium. Al mismo tiempo, Deno no es una bifurcación de Node.js, sino un nuevo proyecto creado desde cero. El código del proyecto se distribuye bajo la licencia MIT y se cuentan con compilaciones preparadas para Linux, Windows y macOS.
Si estás interesado en poder conocer más al respecto, puedes consultar el siguiente enlace.