A plataforma JavaScript Deno é compatible cos módulos NPM

Lanzouse Deno 1.28, un marco para aplicacións JavaScript e TypeScript de sandbox que se poden usar para crear controladores no servidor. A plataforma está desenvolvida por Ryan Dahl, o creador de Node.js. Do mesmo xeito que Node.js, Deno usa o motor JavaScript V8, que tamén se usa nos navegadores baseados en Chromium. Ao mesmo tempo, Deno non é unha bifurcación de Node.js, senón que é un proxecto novo creado desde cero. O código do proxecto distribúese baixo a licenza MIT. As compilacións están preparadas para Linux, Windows e macOS.

O proxecto Deno foi creado para ofrecer aos usuarios un ambiente máis seguro e eliminar erros conceptuais na arquitectura Node.js. Para mellorar a seguridade, o motor V8 está escrito en Rust, o que evita moitas das vulnerabilidades que se derivan da manipulación de memoria de baixo nivel. Para procesar as solicitudes nun modo sen bloqueo, utilízase a plataforma Tokio, tamén escrita en Rust. Tokio permítelle crear aplicacións de alto rendemento baseadas na arquitectura impulsada por eventos, que admite multi-threading e procesa solicitudes de rede en modo asíncrono.

Un cambio fundamental na nova versión é a estabilización da compatibilidade cos paquetes aloxados no repositorio de NPM, o que permite que Deno utilice máis de 1.3 millóns de módulos creados para a plataforma Node.js. Por exemplo, as aplicacións baseadas en Deno agora poden usar módulos de acceso a datos persistentes como Prisma, Mongoose e MySQL, así como marcos front-end como React e Vue. Algúns módulos NPM seguen sendo incompatibles con Deno, por exemplo debido ás ligazóns a elementos do contorno específicos de Node.js, como o ficheiro package.json. Tampouco é posible usar o comando "deno compile" con módulos NPM. As futuras versións planean abordar estas incompatibilidades e limitacións.

O soporte para o sistema de módulos ECMAScript de Deno e o modelo de API web mantense ao mesmo nivel e o familiar esquema de carga baseado en URL de Deno úsase para importar módulos NPM. Para acceder aos módulos NPM, hai un prefixo URL especial "npm:", que se pode usar do mesmo xeito que os módulos Deno habituais. Por exemplo, para importar un módulo NPM, pode especificar 'import { chalk } from "npm:chalk@5";', e executar un script NPM desde a liña de comandos - "deno run --allow-env --allow -rea npm:create- vite-extra.”

Usar paquetes NPM en Deno é moito máis sinxelo que en Node.js, xa que non hai que preinstalar módulos (os módulos instálanse cando se inicia a aplicación por primeira vez), non hai ficheiro package.json e non hai node_modules predeterminado. directorio (os módulos almacénanse en caché no directorio compartido, pero é posible devolver o comportamento antigo usando a opción "--node-modules-dir").

As aplicacións baseadas en NPM conservan a capacidade de usar as capacidades avanzadas de control de acceso, illamento e seguridade de Deno. Para contrarrestar ataques a través de dependencias cuestionables, Deno bloquea por defecto todos os intentos de acceder ao sistema desde as dependencias e mostra unha advertencia sobre os problemas detectados. Por exemplo, cando un módulo tenta obter acceso de escritura a /usr/bin/, mostrarase unha solicitude de confirmación desta operación: deno run npm:install-malware ⚠️ ┌ Deno solicita acceso de escritura a /usr/bin/. ├ Solicitado por `install-malware` ├ Executa de novo con --allow-write para evitar esta solicitude. └ Permitir? [y/n] (y = si, permitir; n = non, denegar) >

As melloras non NPM na nova versión inclúen a actualización do motor V8 para o lanzamento 10.9, a detección automática de ficheiros con bloqueos, a estabilización de Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() e API Deno. .uid(), engadindo unha nova API inestable Deno.Command() para executar comandos (substitución universal para Deno.spawn, Deno.spawnSync e Deno.spawnChild).

Características principais de Deno:

  • Configuración predeterminada orientada á seguridade. O acceso aos ficheiros, as redes e o acceso ás variables de ambiente están desactivados por defecto e deben estar activados de forma explícita. As aplicacións execútanse de forma predeterminada en ambientes sandbox illados e non poden acceder ás capacidades do sistema sen conceder permisos explícitos;
  • Soporte integrado para TypeScript máis aló de JavaScript. Para a verificación de tipos e a xeración de JavaScript, utilízase o compilador estándar TypeScript, o que leva a unha caída no rendemento en comparación coa análise de JavaScript en V8;
  • O tempo de execución vén en forma dun único ficheiro executable autónomo ("deno"). Para executar aplicacións usando Deno, só precisa descargar un ficheiro executable para a súa plataforma, duns 30 MB de tamaño, que non ten dependencias externas e non require ningunha instalación especial no sistema. Ademais, deno non é unha aplicación monolítica, senón que é unha colección de paquetes Rust crate (deno_core, rusty_v8), que se poden usar por separado;
  • Ao iniciar o programa, así como para cargar módulos, pode usar o enderezo URL. Por exemplo, para executar o programa welcome.js, pode usar o comando "deno https://deno.land/std/examples/welcome.js". O código de recursos externos descárgase e almacena en caché no sistema local, pero nunca se actualiza automaticamente (a actualización require executar explícitamente a aplicación coa marca "--reload");
  • Procesamento eficiente de solicitudes de rede mediante HTTP nas aplicacións; a plataforma está deseñada para crear aplicacións de rede de alto rendemento;
  • A capacidade de crear aplicacións web universais que se poden executar tanto en Deno como nun navegador web normal;
  • A presenza dun conxunto estándar de módulos, cuxo uso non require vinculación a dependencias externas. Os módulos da colección estándar foron sometidos a auditorías adicionais e probas de compatibilidade;
  • Ademais do tempo de execución, a plataforma Deno tamén actúa como xestor de paquetes e permite acceder aos módulos por URL dentro do código. Por exemplo, para cargar un módulo, pode especificar no código "import * como rexistro de "https://deno.land/std/log/mod.ts". Os ficheiros descargados de servidores externos mediante o URL almacénanse na memoria caché. A vinculación ás versións do módulo determínase especificando os números de versión dentro do URL, por exemplo, "https://unpkg.com/[protexido por correo electrónico]/dist/liltest.js";
  • A estrutura inclúe un sistema integrado de inspección de dependencias (o comando "deno info") e unha utilidade para o formato de código (deno fmt);
  • Todos os scripts de aplicación pódense combinar nun ficheiro JavaScript.

Fonte: opennet.ru

Engadir un comentario