Den Auteur vun Node.js huet déi sécher JavaScript Plattform Deno 1.0 presentéiert

No zwee Joer Entwécklung presentéiert éischt grouss Verëffentlechung Gëff mir 1.0, eng Plattform fir Stand-alone Ausféierung vun Uwendungen am JavaScript an TypeScript, déi benotzt kënne ginn fir Handler ze kreéieren déi um Server lafen. D'Plattform ass entwéckelt vum Ryan Dahl (Vum Ryan Dahl), Ersteller vun Node.js. Wéi Node.js benotzt Deno e JavaScript-Motor V8, déi och a Chromium-baséiert Browser benotzt gëtt. Zur selwechter Zäit ass Deno keng Gabel vum Node.js, awer ass en neie Projet erstallt vun Null. Projet Code verdeelt duerch ënner MIT Lizenz. Assembléeën virbereet fir Linux, Windows a macOS.

Déi bedeitend Versiounsnummer ass verbonne mat der Stabiliséierung vun den APIen am Deno Nummraum, déi verantwortlech sinn fir d'Interaktioun vun Uwendungen mam OS. Software Schnëttplazen déi bis elo hunn net stabiliséiert, sinn als Standard verstoppt an nëmme verfügbar wann Dir am "--unstable" Modus leeft. Wéi nei Versioune geformt ginn, ginn esou APIe lues a lues stabil. D'API am globalen Nummraum, deen allgemeng Funktiounen enthält wéi setTimeout () an fetch (), ass sou no wéi méiglech un der API vu konventionelle Webbrowser a gëtt am Aklang mat Webstandards fir Browser entwéckelt. D'APIs geliwwert vu Rust, déi direkt am Plattformcode benotzt ginn, wéi och d'Interface fir Plugins fir Deno Runtime z'entwéckelen, sinn nach net stabiliséiert a weider ze entwéckelen.

D'Schlësselmotiv fir eng nei JavaScript Plattform ze kreéieren waren de Wonsch fir konzeptuell Feeler ze eliminéieren, zouginn an der Node.js Architektur, a bitt de Benotzer e méi séchert Ëmfeld. Fir d'Sécherheet ze verbesseren, gëtt de V8-Motor a Rust geschriwwen, wat vill vun de Schwachstelle vermeit, déi aus Low-Level Gedächtnismanipulatioun entstinn, wéi After-Free Access, Null Pointer-Dereferenzen, a Puffer-Iwwerreechungen. D'Plattform gëtt benotzt fir Ufroen am net-blockéierende Modus ze veraarbecht Tokio, och an Rust geschriwwen. Tokio erlaabt Iech High-Performance Uwendungen op Basis vun event-driven Architektur ze kreéieren, Multi-Threading z'ënnerstëtzen an Netzwierkfuerderungen am asynchrone Modus ze veraarbechten.

Haaptstrooss Fonctiounen Deno:

  • Sécherheetsorientéiert Standardkonfiguratioun. Dateizougang, Vernetzung an Zougang zu Ëmfeldvariablen sinn als Standard deaktivéiert a muss explizit aktivéiert ginn. Uwendungen lafen par défaut an isoléierten Sandbox-Ëmfeld a kënnen net op Systemfäegkeeten zougräifen ouni explizit Permissiounen ze ginn;
  • Built-in Support fir TypeScript iwwer JavaScript. De Standard TypeScript Compiler gëtt benotzt fir Typen ze kontrolléieren an JavaScript ze generéieren, wat zu engem Performance Hit am Verglach zum JavaScript Parsing am V8 féiert. An Zukunft plangen mir eis eegen Implementatioun vum TypeScript-Typ-Kontrollsystem virzebereeden, wat d'TypeScript-Veraarbechtungsleistung duerch eng Uerdnung vun der Gréisst verbessert;
  • Runtime kënnt a Form vun enger eenzeger selbstänneg ausführbarer Datei ("deno"). Fir Uwendungen mat Deno ze lafen ass et genuch Download fir seng Plattform gëtt et eng ausführbar Datei, ongeféier 20 MB an der Gréisst, déi keng extern Ofhängegkeet huet a keng speziell Installatioun um System erfuerdert. Ausserdeem ass deno keng monolithesch Applikatioun, awer ass eng Sammlung vu Këschtpakete a Rust (deno_core, rusty_v8), déi separat benotzt ka ginn;
  • Wann Dir de Programm start, wéi och fir Moduler ze lueden, kënnt Dir URL Adresséierung benotzen. Zum Beispill, fir de Welcome.js Programm ze lafen, kënnt Dir de Kommando benotzen "deno https://deno.land/std/examples/welcome.js". Code vun externen Ressourcen gëtt op de lokale System erofgelueden an cache, awer gëtt ni automatesch aktualiséiert (Aktualiséierung erfuerdert explizit d'Applikatioun mam Fändel "--reload" ze lafen);
  • Effizient Veraarbechtung vun Netzwierkerfroen iwwer HTTP an Uwendungen; D'Plattform ass entwéckelt fir High-Performance Netzwierkapplikatiounen ze kreéieren;
  • D'Kapazitéit fir universell Webapplikatiounen ze kreéieren déi souwuel am Deno an an engem normale Webbrowser ausgefouert kënne ginn;
  • Disponibilitéit Standard Set vu Moduler, d'Benotzung vun deem erfuerdert keng Bindung un extern Ofhängegkeeten. Moduler aus der Standardkollektioun hunn zousätzlech Audit- a Kompatibilitéitstester gemaach;
  • Nieft der Runtime funktionnéiert d'Deno Plattform och als Package Manager an erlaabt Iech Zougang zu Moduler duerch URL am Code ze kréien. Zum Beispill, fir e Modul ze lueden, kënnt Dir am Code "import * als Log vun "https://deno.land/std/log/mod.ts" spezifizéieren. Dateien, déi vun externen Server iwwer URL erofgeluede ginn, ginn cache. Bindung u Modulversioune gëtt festgeluecht andeems Dir Versiounsnummeren an der URL spezifizéiert, zum Beispill "https://unpkg.com/[Email geschützt]/dist/liltest.js";
  • D'Struktur enthält eng integréiert Ofhängegkeet Inspektioun System (de "deno info" Kommando) an engem Utility fir Code Formatéierung (deno fmt);
  • All Applikatioun Scripte kënnen an eng JavaScript Datei kombinéiert ginn.

Differenzen vun Node.js:

  • Deno benotzt net npm Package Manager
    an ass net mat Repositories gebonnen, Moduler ginn iwwer eng URL oder duerch e Dateiwee adresséiert, an d'Moduler selwer kënnen op all Websäit gesat ginn;
  • Deno benotzt net "package.json" fir Moduler ze definéieren;
  • API Ënnerscheed, all asynchronous Aktiounen an Deno zréck e Verspriechen;
  • Deno verlaangt explizit Definitioun vun all néideg Permissiounen fir Fichieren, Reseau an Ëmwelt Verännerlechen;
  • All Feeler, déi net mat Handler geliwwert ginn, féieren zum Ofschloss vun der Applikatioun;
  • Deno benotzt der ECMAScript Modul System an ënnerstëtzt net verlaangen ();
  • Deno's agebaute HTTP-Server ass an TypeScript geschriwwen a leeft uewen op nativen TCP-Sockets, während den Node.js HTTP-Server an C geschriwwe gëtt a Bindungen fir JavaScript ubitt. D'Entwéckler vum Deno hu sech op d'Optimisatioun vun der ganzer TCP Socket Layer konzentréiert an eng méi allgemeng Interface ubitt. Deno HTTP Server bitt méi nidderegen Duerchgang awer garantéiert prévisibel niddereg latency. Zum Beispill, am Test, eng einfach Applikatioun baséiert op Deno HTTP Server konnt 25 Tausend Ufroe pro Sekonn mat enger maximaler Latenz vun 1.3 Millisekonnen veraarbecht ginn. Am Node.js huet eng ähnlech Applikatioun 34 Tausend Ufroe pro Sekonn veraarbecht, awer Latenz gounge vun 2 an 300 Millisekonnen.
  • Deno ass net kompatibel mat Packagen fir Node.js (NPM), awer gëtt separat entwéckelt interlayer fir Kompatibilitéit mat der Norm Node.js Bibliothéik, wéi et sech entwéckelt, méi a méi Uwendungen, déi fir Node.js geschriwwe sinn, kënnen an Deno lafen.
  • Source: opennet.ru

Setzt e Commentaire