Nella piattaforma JavaScript Deno è assicurata la compatibilità con i moduli NPM

È stata presentata la versione 1.28 di Deno, una piattaforma per l'esecuzione sicura di applicazioni scritte in JavaScript e TypeScript, che può essere utilizzata per creare gestori che operano sul server. La piattaforma è sviluppata da Ryan Dahl, il creatore di Node.js. Come in Node.js, Deno utilizza il motore JavaScript V8, che è anche impiegato nei browser basati su Chromium. Deno non è un ramo di Node.js, ma rappresenta un nuovo progetto creato da zero. Il codice del progetto è distribuito con licenza MIT. Le build sono disponibili per Linux, Windows e macOS.

Il progetto Deno è stato creato per fornire agli utenti un ambiente più sicuro ed eliminare errori concettuali presenti nell'architettura di Node.js. Per aumentare la sicurezza, il wrapper attorno al motore V8 è scritto in Rust, un linguaggio che consente di evitare molte vulnerabilità derivanti da operazioni a basso livello sulla memoria. Per la gestione delle richieste in modo non bloccante, viene utilizzata la piattaforma Tokio, anch'essa scritta in Rust. Tokio consente di creare applicazioni ad alte prestazioni basate su un'architettura orientata agli eventi, supportando la multithreading e il trattamento delle richieste di rete in modo asincrono.

Il cambiamento principale nella nuova versione è la stabilizzazione della compatibilità con i pacchetti pubblicati nel repository NPM, permettendo di utilizzare in Deno oltre 1,3 milioni di moduli creati per la piattaforma Node.js. Ad esempio, nelle applicazioni basate su Deno è ora possibile utilizzare moduli come Prisma, Mongoose e MySQL per organizzare l'accesso persistente ai dati, così come framework per il frontend come React e Vue. Alcuni moduli NPM rimangono incompatibili con Deno, ad esempio a causa di legami con elementi ambientali specifici di Node.js, come il file package.json. Inoltre, attualmente non è possibile utilizzare il comando "deno compile" con i moduli NPM. Nelle future versioni si prevede di risolvere tali incompatibilità e limitazioni.

Il supporto del modello precedentemente utilizzato in Deno basato sul sistema di moduli ECMAScript e Web API è stato mantenuto allo stesso livello e per l'importazione dei moduli NPM viene utilizzato il consueto schema di caricamento basato su URL di Deno. Per accedere ai moduli NPM è previsto un prefisso URL speciale "npm:", che può essere utilizzato analogamente ai normali moduli Deno. Ad esempio, per importare un modulo NPM è possibile specificare ‘import { chalk } from "npm:chalk@5";’, mentre per eseguire uno script NPM dalla riga di comando — "deno run —allow-env —allow-read npm:create-vite-extra".

L'utilizzo dei pacchetti NPM in Deno è notevolmente più semplice rispetto a Node.js, poiché non è necessaria l'installazione preventiva dei moduli (i moduli vengono installati al primo avvio dell'applicazione), non viene utilizzato il file package.json e non viene utilizzata di default la directory node_modules (i moduli vengono memorizzati in una cartella comune, ma è possibile tornare al comportamento precedente tramite l'opzione "—node-modules-dir").

Negli applicativi basati su NPM rimane la possibilità di utilizzare i meccanismi di separazione degli accessi, isolamento e attivazione delle funzionalità di sicurezza avanzate forniti in Deno. Per contrastare attacchi tramite dipendenze sospette, Deno blocca per impostazione predefinita tutti i tentativi di accesso al sistema dalle dipendenze e fornisce un avviso sui problemi rilevati. Ad esempio, nel tentativo di un modulo di ottenere accesso in scrittura a /usr/bin/ verrà visualizzata una richiesta di conferma di tale operazione: deno run npm:install-malware ⚠️ ┌ Deno richiede l'accesso in scrittura a /usr/bin/. ├ Richiesto da `install-malware` ├ Esegui di nuovo con —allow-write per bypassare questo prompt. └ Permettere? [y/n] (y = sì, consenti; n = no, nega) >

Tra i miglioramenti non correlati in NPM nella nuova versione si menziona l'aggiornamento del motore V8 alla versione 10.9, il rilevamento automatico di file di blocco, la stabilizzazione delle API Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() e Deno.uid(), e l'aggiunta di una nuova API instabile Deno.Command() per l'esecuzione di comandi (un'alternativa universale a Deno.spawn, Deno.spawnSync e Deno.spawnChild).

Caratteristiche principali di Deno:

  • Orientamento alla sicurezza nella configurazione predefinita. L'accesso a file, funzionalità di rete e variabili d'ambiente è bloccato per impostazione predefinita e richiede attivazione esplicita. Le applicazioni vengono eseguite in ambienti sandbox isolati di default e non possono accedere alle funzionalità di sistema senza esplicite autorizzazioni;
  • Supporto integrato per il linguaggio TypeScript oltre a JavaScript. Per il controllo dei tipi e la generazione di JavaScript viene utilizzato il compilatore TypeScript incorporato, il che comporta un calo delle prestazioni rispetto all'analisi di JavaScript in V8;
  • Runtime è fornito come un file eseguibile autonomo («deno»). Per eseguire applicazioni utilizzando Deno, è sufficiente scaricare un file eseguibile per la propria piattaforma, delle dimensioni di circa 30 MB, senza dipendenze esterne e non richiedente installazioni particolari nel sistema. Inoltre, deno non è un'applicazione monolitica, ma una collezione di pacchetti crate in Rust (deno_core, rusty_v8) che possono essere utilizzati separatamente;
  • Quando avvii un programma, puoi anche utilizzare indirizzamenti tramite URL per caricare moduli. Ad esempio, per eseguire il programma welcome.js puoi utilizzare il comando «deno https://deno.land/std/examples/welcome.js». Il codice da risorse esterne viene scaricato e memorizzato nella cache sul sistema locale, ma non viene mai aggiornato automaticamente (per aggiornare, è necessario eseguire esplicitamente l'applicazione con il flag «—reload»);
  • Gestione efficace delle richieste di rete in applicazioni HTTP, la piattaforma è progettata per creare applicazioni di rete ad alte prestazioni;
  • Possibilità di creare applicazioni web universali, che possono essere eseguite sia in Deno che nei normali browser web;
  • Disponibilità di un insieme standard di moduli, il cui utilizzo non richiede vincoli a dipendenze esterne. I moduli della collezione standard hanno superato un audit aggiuntivo e un controllo di compatibilità;
  • Oltre al runtime, la piattaforma Deno funge anche da gestore di pacchetti e consente di riferirsi ai moduli tramite URL all'interno del codice. Ad esempio, per caricare un modulo si può specificare nel codice «import * as log from «https://deno.land/std/log/mod.ts». I file caricati da esterni server via URL sono memorizzati nella cache. I vincoli sulle versioni dei moduli sono stabiliti tramite specifiche dei numeri di versione all'interno dell'URL, ad esempio, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
  • Il sistema è integrato con un sistema di ispezione delle dipendenze (comando «deno info») e un'utility per la formattazione del codice (deno fmt);
  • Tutti gli script dell'applicazione possono essere uniti in un unico file JavaScript.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster