Articles

cum nod.js abordează provocarea nodului Deno

al lui Ryan Dahl.js, open source JavaScript runtime, a lansat versiunea 15th săptămâna trecută. Acum, în Al 11-lea an, nod.js este la fel de popular ca niciodată, dar în 2020 a apărut un concurent parvenit. Deno, un open source JavaScript runtime lansat în mai, a fost creat de nimeni altul decât Ryan Dahl — autorul original al Node.js. Chiar mai rău decât să ai un concurent care îți cunoaște produsul pe dos, Deno a fost creat special pentru a remedia ceea ce Dahl a perceput ca fiind punctele slabe cheie ale Node.js-inclusiv probleme de securitate, utilizarea unui sistem centralizat de depozitare (NPM) și „scule grele.”

pentru a afla modul în care generația actuală de nod.întreținătorii js se ocupă de noul challenger — și, prin extensie, de ceea ce fac pentru a aborda criticile lui Dahl-am intervievat Bethany Griggs, inginer Senior de Software la Red Hat și un nod.JS membru al Comitetului Director Tehnic. Griggs a fost implicat cu Nodul.proiectul js din 2016, în primul rând cu Nodul.JS grupul de lucru de presă.

Richard MacManus
Richard este senior editor la New Stack și scrie o coloană săptămânală despre ce urmează pe internetul nativ din cloud. Anterior, el a fondat ReadWriteWeb în 2003 și a construit-o într-unul dintre cele mai influente site-uri de știri și analize tehnologice din lume.

nod.js permite dezvoltatorilor să execute cod JavaScript în afara unui browser web. Scopul său inițial a fost de a crea pagini web dinamice pe un server, înainte de a trimite către browser; adică codul JavaScript a fost executat pe partea de server, mai degrabă decât pe client. Mai general, nod.js a devenit implicit pentru programare web backend (în timp ce place de React și Angular sunt utilizate pentru frontend). Ideea fiind că dezvoltatorii pot folosi același limbaj, JavaScript, atât pentru backend, cât și pentru frontend.

nod.js este, de asemenea, extrem de scalabil și are un model de programare bazat pe evenimente, ambele făcându-l potrivit pentru aplicațiile native cloud.

„nod.js continuă să fie unul dintre cele mai importante runtime pentru construirea microserviciilor native cloud și a aplicațiilor backend”, mi-a spus Griggs. Ea a adăugat că ” este popular și pentru proiectele IoT — unul dintre exemplele mele preferate este NASA folosind Node.js pentru a monitoriza date costum spațiu.”

costume spațiale deoparte, nod.js nu mai este văzut ca un lucru nou fierbinte de dezvoltare JavaScript (Next.js, un cadru frontend React, a luat probabil acea manta). Și în comparație cu natura de ultimă oră a Deno — de exemplu, Deno a fost scris în noul limbaj de programare la modă, Rust — nodul.proiectul js urmează o cale de dezvoltare relativ conservatoare în zilele noastre. Deci, nu este o surpriză faptul că versiunea 15 a Node.js este un upgrade incremental.

Griggs a citat „aruncarea implicită a respingerilor netratate” ca fiind cea mai semnificativă actualizare din v15. Aceasta înseamnă că dezvoltatorii pot primi acum ” feedback timpuriu că omit gestionarea unei erori în aplicația lor.”O actualizare tehnică valoroasă, fără îndoială,dar care nu va genera discuții entuziaste pe Twitter.

răspunsul la criticile lui Ryan Dahl

ceea ce am fost mai curios despre, a fost dacă nodul.echipa de proiect js a întreprins noi dezvoltări sau remedieri pentru a aborda unele dintre preocupările pe care Ryan Dahl le-a ridicat în ultimii ani?

cu câțiva ani în urmă, Dahl a făcut o prezentare despre regretele sale după ce a creat Node.js. Unul major a fost că nu a făcut timpul de rulare cât mai sigur posibil — lucru pe care l-a abordat atunci când a creat Deno, care este promovat ca fiind „sigur în mod implicit.”Abordarea Deno a securității este de a pune șine de siguranță în jurul accesului la date; așa cum este descris în manualul său, „Deno necesită permisiuni explicite pentru accesul la fișiere, rețea și mediu.”

Ryan Dahl la JSConf EU 2018.

Diplomatic, Griggs mi-a spus acel nod.js va „inspira de la” Deno pe această și alte probleme. Cu toate acestea, ea a spus că nodul.JS project ” a avut o istorie de discuții în jurul aplicării securității și limitării accesului la API-uri înainte de anunțarea Deno.”Ea a subliniat câteva” caracteristici experimentale ” pentru securitate (Exemplul 1, Exemplul 2).

De asemenea, Griggs nu este convins că abordarea de siguranță a lui Deno pentru acces este potrivită pentru Node.js. „Pentru aplicații practice”, a spus ea, ” va trebui să reveniți rapid la acordarea accesului la multe API-uri, astfel încât valoarea netă versus complexitate ar fi scăzută.”

deși există interes în rândul nodului.echipa de proiect js în experimentarea cu caracteristici de securitate mai puternice, în conformitate cu Griggs ” nu a existat un caz convingător de a adopta toate aceleași compromisuri ca Deno.”

în ceea ce privește critica lui Dahl față de npm ca ecosistem închis pentru module, Griggs nu vede niciun motiv pentru nod.js pentru a schimba asta.”în ceea ce privește modul în care sunt gestionate modulele, ecosistemul modulului a fost o mare parte a succesului nodului.js. Deși există discuții în curs privind integrarea clienților — registrele care deservesc modulele-accentul principal a fost pus pe adăugarea de suport pentru modulele ES6, mai degrabă decât pe schimbarea modului în care sunt gestionate.”

în loc să utilizeze npm, Deno a optat pentru utilizarea modulelor la care se face referire ca adrese URL sau căi de fișiere.

server-Side JavaScript încă merge puternic

cu popularitatea actuală a cadrelor JavaScript ca Next.js și Gatsby, împreună cu creșterea Jamstack și abordarea sa statică de generare a site-ului, l-am întrebat pe Griggs dacă acest lucru a afectat cazurile de utilizare a JavaScript-ului de pe server?

„poate exista o reducere în utilizarea de lucruri cum ar fi templating motoare pentru randare server-side”, a spus ea, „dar nod.js este încă folosit foarte mult pentru a construi microserviciile care susțin paginile statice care pot fi implementate folosind abordări precum Jamstack. Nod.js, de asemenea, continuă să fie puternic utilizate în instrumentele care alcătuiesc conductele de dezvoltare pentru client-side JavaScript.”

viitorul nodului.js și Deno

deci, ce urmează pentru nod.js? În postul de anunț despre versiunea 15, Griggs a scris că după sărbătorirea celei de-a zecea aniversări a nodului.js anul trecut, ” proiectul a început în următorii 10 ani de nod.efort js. „

l-am întrebat pe Griggs ce fel de inițiative vor să implementeze membrii proiectului în următorul deceniu?

„până acum ne-am definit prioritățile ca experiență de dezvoltator, stabilitate, calități operaționale, nod.JS maintainer experiență și tehnologie și API-uri actualizate”, a răspuns ea.

acestea sunt prezentate în prezent într-un document GitHub intitulat valori și priorități. Securitatea este menționată o singură dată, ca subcategorie a „calităților operaționale” și afirmă simplu: „abordarea vulnerabilităților de securitate într-o manieră responsabilă.”

nu pare un obiectiv ridicat pentru următorul deceniu, mai ales în comparație cu obiectivul mai ambițios al lui Deno de a încerca să evite vulnerabilitățile în primul rând.

dar din moment ce nod.js este un proiect stabil și relativ de lungă durată și se adresează unor furnizori de software pentru întreprinderi foarte mari (cum ar fi angajatorul lui Grigg, Red Hat), nu puteți da vina pe întreținători pentru că sunt conservatori. Deși lasă o deschidere pentru alții să se gândească mai mare și mai îndrăzneț la viitorul JavaScript-ului de pe server — exact ceea ce fac Dahl și proiectul său Deno.Red Hat este sponsorul noului Stack.

imagine caracteristică prin .