Otè a nan Node.js prezante platfòm an sekirite JavaScript Deno 1.0

Apre dezan nan devlopman prezante premye gwo lage Banm 1.0, yon platfòm pou egzekisyon otonòm aplikasyon nan JavaScript ak TypeScript, ki ka itilize yo kreye moun kap okipe yo ki kouri sou sèvè a. Se platfòm la devlope pa Ryan Dahl (Ryan Dahl), kreyatè Node.js. Menm jan ak Node.js, Deno sèvi ak yon motè JavaScript V8, ki itilize tou nan navigatè ki baze sou Chromium. An menm tan an, Deno se pa yon fouchèt nan Node.js, men se yon nouvo pwojè ki te kreye nan grafouyen. Kòd pwojè distribiye pa anba lisans MIT. Asanble yo prepare pou Linux, Windows ak macOS.

Nimewo a vèsyon enpòtan ki asosye ak estabilizasyon API yo nan espas non Deno, ki responsab pou entèraksyon aplikasyon yo ak OS la. Lojisyèl interfaces ki gen byen lwen tèlman pa estabilize, yo kache pa default epi yo disponib sèlman lè yo kouri nan "--enstab" mòd. Kòm nouvo vèsyon yo fòme, API sa yo pral piti piti vin estab. API nan espas non mondyal la, ki gen ladann fonksyon komen tankou setTimeout() ak fetch(), pi pre ke posib ak API navigatè entènèt konvansyonèl yo epi li devlope an akò ak estanda entènèt pou navigatè yo. APIs Rust te founi yo, ki itilize dirèkteman nan kòd platfòm lan, ansanm ak koòdone pou devlope plugins pou Deno ègzekutabl, poko estabilize e yo kontinye devlope.

Motif kle yo pou kreye yon nouvo platfòm JavaScript te dezi a elimine erè konseptyèl ekspresyon, admèt nan achitekti Node.js, epi bay itilizatè yo yon anviwònman ki pi an sekirite. Pou amelyore sekirite, motè V8 ekri nan Rust, ki evite anpil nan frajilite ki rive nan manipilasyon memwa ki ba, tankou aksè apre gratis, dereferans pointeur nil, ak depase tanpon. Se platfòm la itilize pou trete demann nan mòd ki pa bloke Tokyo, ekri tou nan Rust. Tokio pèmèt ou kreye aplikasyon pou pèfòmans segondè ki baze sou achitekti evènman-kondwi, sipòte milti-threading ak pwosesis demann rezo nan mòd asynchrone.

Prensipal la karakteristik Deno:

  • Sekirite-oryante konfigirasyon default. Aksè dosye, rezo, ak aksè nan varyab anviwònman yo enfim pa default epi yo dwe klèman aktive. Aplikasyon yo pa defo kouri nan anviwònman sandbox izole epi yo pa ka jwenn aksè nan kapasite sistèm yo san yo pa bay otorizasyon eksplisit;
  • Sipò entegre pou TypeScript pi lwen pase JavaScript. Yo itilize konpilatè TypeScript estanda a pou tcheke kalite ak jenere JavaScript, ki mennen nan yon frape pèfòmans konpare ak analiz JavaScript nan V8. Nan tan kap vini an, nou planifye pou prepare pwòp aplikasyon pa nou nan sistèm tcheke tip TypeScript, ki pral amelyore pèfòmans pwosesis TypeScript pa yon lòd nan grandè;
  • Ègzekutabl vini nan fòm lan nan yon sèl dosye ègzèkutabl endepandan ("deno"). Pou kouri aplikasyon lè l sèvi avèk Deno li ase telechaje pou platfòm li a gen yon sèl dosye ègzèkutabl, apeprè 20 MB nan gwosè, ki pa gen okenn depandans ekstèn epi ki pa mande pou nenpòt enstalasyon espesyal sou sistèm nan. Anplis, deno se pa yon aplikasyon monolitik, men se yon koleksyon pakè kès nan Rust (deno_core, rusty_v8), ki ka itilize separeman;
  • Lè w kòmanse pwogram nan, osi byen ke chaje modil, ou ka itilize adrès URL. Pou egzanp, pou kouri pwogram welcome.js la, ou ka itilize lòd "deno https://deno.land/std/examples/welcome.js". Kòd ki soti nan resous ekstèn telechaje ak kachèt sou sistèm lokal la, men yo pa janm mete ajou otomatikman (mizajou mande pou eksplisitman kouri aplikasyon an ak drapo "--reload" la);
  • Pwosesis efikas nan demann rezo atravè HTTP nan aplikasyon yo; platfòm la fèt pou kreye aplikasyon rezo pèfòmans segondè;
  • Kapasite nan kreye aplikasyon inivèsèl entènèt ki ka egzekite tou de nan Deno ak nan yon navigatè entènèt regilye;
  • disponiblite seri modil estanda, itilize nan ki pa mande pou obligatwa nan depandans ekstèn. Modil ki soti nan koleksyon estanda yo te sibi odit adisyonèl ak tès konpatibilite;
  • Anplis ègzekutabl, platfòm Deno tou aji kòm yon manadjè pake epi pèmèt ou jwenn aksè nan modil pa URL andedan kòd la. Pou egzanp, chaje yon modil, ou ka presize nan kòd la "enpòte * kòm boutèy demi lit soti nan "https://deno.land/std/log/mod.ts". Fichye telechaje soti nan sèvè ekstèn atravè URL yo nan kachèt. Liaison ak vèsyon modil yo detèmine pa espesifye nimewo vèsyon andedan URL la, pou egzanp, "https://unpkg.com/[imèl pwoteje]/dist/liltest.js";
  • Estrikti a gen ladan yon sistèm enspeksyon depandans entegre (kòmand "deno info") ak yon sèvis piblik pou fòma kòd (deno fmt);
  • Tout scripts aplikasyon yo ka konbine nan yon sèl fichye JavaScript.

Diferans ak Node.js:

  • Deno pa sèvi ak manadjè pake npm
    epi li pa mare nan depo, modil yo adrese atravè yon URL oswa pa yon chemen dosye, epi modil yo tèt yo ka mete sou nenpòt sit entènèt;
  • Deno pa sèvi ak "package.json" pou defini modil;
  • API diferans, tout aksyon asynchrone nan Deno retounen yon pwomès;
  • Deno mande pou yon definisyon klè nan tout otorizasyon ki nesesè pou dosye, rezo ak anviwònman varyab;
  • Tout erè ki pa bay moun kap okipe yo mennen nan revokasyon aplikasyon an;
  • Deno sèvi ak sistèm modil ECMAScript la epi li pa sipòte require();
  • Sèvè HTTP entegre Deno a ekri nan TypeScript epi li kouri sou tèt sipò TCP natif natal, pandan y ap sèvè HTTP Node.js la ekri an C epi li bay koneksyon pou JavaScript. Devlopè Deno yo te konsantre sou optimize tout kouch TCP priz la epi bay yon koòdone pi jeneral. Deno HTTP Server bay pi ba debi men li garanti previzib ba latansi. Pou egzanp, nan tès la, yon aplikasyon senp ki baze sou Deno HTTP sèvè te kapab trete 25 mil demann pou chak segonn ak yon latansi maksimòm de 1.3 milisgond. Nan Node.js, yon aplikasyon menm jan an te trete 34 mil demann pou chak segonn, men latans yo te varye ant 2 ak 300 milisgond.
  • Deno pa konpatib ak pakè pou Node.js (NPM), men y ap devlope separeman interlayer pou konpatibilite ak bibliyotèk Node.js estanda a, menm jan li devlope, plis ak plis aplikasyon ekri pou Node.js yo pral kapab kouri nan Deno.
  • Sous: opennet.ru

Add nouvo kòmantè