Deno-projektet utvecklar en säker JavaScript-plattform som liknar Node.js

Tillgängliga projekt release Ge mig 0.33, som erbjuder en Node.js-liknande plattform för fristående applikationskörning i JavaScript och TypeScript som kan användas för att köra applikationer utan att vara bundna till en webbläsare, som att skapa hanterare som körs på servern. Deno använder en JavaScript-motor V8, som också används i Node.js och webbläsare baserade på Chromium-projektet. Projektkod levererad av under MIT-licens. Projektet utvecklas av Ryan Dahl (Ryan Dahl), skapare av Node.js JavaScript-plattformen.

Ett av huvudmålen med att skapa en ny körtid för JavaScript är att tillhandahålla en säkrare miljö. För att förbättra säkerheten är V8-motorn skriven i Rust, vilket undviker många av de sårbarheter som uppstår från minnesmanipulation på låg nivå, såsom efterfri åtkomst, nollpekaredereferenser och buffertöverskridanden. Plattformen används för att behandla förfrågningar i icke-blockerande läge tokio, även skriven i Rust. Tokio låter dig skapa högpresterande applikationer baserade på händelsedriven arkitektur, som stöder multi-threading och bearbetning av nätverksförfrågningar i asynkront läge.

Den huvudsakliga särdrag Deno:

  • Säkerhetsorienterad standardkonfiguration. Filåtkomst, nätverk och åtkomst till miljövariabler är inaktiverade som standard och måste vara uttryckligen aktiverade;
  • Inbyggt stöd för TypeScript-språket förutom JavaScript;
  • Runtime kommer i form av en enda fristående körbar fil ("deno"). För att köra applikationer med Deno räcker det nedladdning för sin plattform en körbar fil, cirka 10 MB i storlek, som inte har några externa beroenden och inte kräver någon speciell installation på systemet;
  • När du startar programmet, samt för att ladda moduler, kan du använda URL-adressering. Till exempel, för att köra programmet welcome.js kan du använda kommandot "deno https://deno.land/std/examples/welcome.js". Kod från externa resurser laddas ner och cachelagras på det lokala systemet, men uppdateras aldrig automatiskt (uppdatering kräver att programmet explicit körs med flaggan "--reload");
  • Effektiv bearbetning av nätverksförfrågningar via HTTP i applikationer, plattformen är designad för att skapa högpresterande nätverksapplikationer;
  • Möjligheten att skapa universella webbapplikationer som kan köras både i Deno och i en vanlig webbläsare;
  • Förutom runtime fungerar Deno-plattformen även som en pakethanterare och låter dig komma åt moduler via URL inuti koden. Till exempel, för att ladda en modul, kan du ange i koden "import * som logg från "https://deno.land/std/log/mod.ts". Filer som laddas ner från externa servrar via URL cachelagras. Bindning till modulversioner bestäms genom att ange versionsnummer i URL:en, till exempel "https://unpkg.com/[e-postskyddad]/dist/liltest.js";
  • Strukturen inkluderar ett integrerat beroendekontrollsystem (kommandot "deno info") och ett verktyg för kodformatering (deno fmt).
  • För applikationsutvecklare föreslagen en uppsättning standardmoduler som har genomgått ytterligare granskning och kompatibilitetstestning;
  • Alla applikationsskript kan kombineras till en JavaScript-fil.

Skillnader från Node.js:

  • Deno använder inte npm-pakethanteraren
    och är inte knuten till arkiv, moduler adresseras via en URL eller en filsökväg, och själva modulerna kan placeras på vilken webbplats som helst;

  • Deno använder inte "package.json" för att definiera moduler;
  • API-skillnad, alla asynkrona åtgärder i Deno ger ett löfte;
  • Deno kräver explicit definition av alla nödvändiga behörigheter för filer, nätverk och miljövariabler;
  • Alla fel som inte tillhandahålls av hanterare leder till att applikationen avslutas;
  • Deno använder ECMAScript-modulsystemet och stöder inte require().

Källa: opennet.ru

Lägg en kommentar