Tot ce trebuie să știți despre noul NODE.JS 8

Sep 11, 2025

Cea mai recentă versiune majoră a NODE.JS aduce multe îmbunătățiri semnificative la comunitatea JavaScript, inclusiv un motor JavaScript actualizat, NPM Versiunea 5, Google V8, NODE.JS API, Async_Hooks, un parser URL Whatwg, tampoane mai sigure și multe altele. Aici vă vom actualiza cu privire la aceste caracteristici și celelalte aspecte cele mai importante ale acestei eliberări.

Node.js 8 este lansat sub numele de cod de cod și este disponibil acum de la Nod.js site. . Se va lucra în mod activ la încă 18 luni (fără funcții noi, doar remedii de eroare, îmbunătățiri de securitate și actualizări NPM), înainte de a intra în modul de întreținere. Ca și în cazul lansărilor anterioare, în timpul lansării modului de întreținere vor primi numai actualizări critice de securitate și remedii de eroare.

  • 20 de instrumente JavaScript pentru a vă sufla mintea

Este sigur să spunem că de când NODE.JS a fost în jur, aceasta este una dintre cele mai mari actualizări pe care le-a primit vreodată - schimbă modul în care sunt scrise add-urile native și, de asemenea, aduce îmbunătățiri suplimentare de securitate și performanță.

Risingstack. A ajutat companiile să reușească cu NODE.JS timp de patru ani cu formare, consultanță sau dezvoltare. Una dintre cele mai mari lupte pe care le aveam adăugăm dependențe native proiectelor.

Înainte de NODE.JS 8, dacă aplicațiile au fost dependente de module cu cod nativ, ori de câte ori au sosit versiunile noi node.js, ca un mijloc de aplicare a trebuit să vă recompilați dependențele. Dacă ați fi norocoși, au lucrat la început.

Acest proces a fost făcut posibil cu metalorii mei de lucru enorme, făcându-se modulele lor în versiunile NODE.JS incompatibile, în special cu ajutorul unui modul numit Nan (node.js abstracții native).

Acest proces este departe de a fi ideal, deoarece o mulțime de companii nu au reușit să-și actualizeze dependențele dacă nu au putut fi compilate și, de asemenea, a pus un volum de muncă foarte mare pe metroul de întreținere a modulelor. Pentru a rezolva această problemă, a fost introdus NODE.JS API (sau N-API).

01. Introduceți API-ul nod.js

Machine agnostic: Native modules now work with Microsoft’s Chakra as well as different Node.js versions

Masina Agnostic: Modulele native lucrează acum cu chakra Microsoft, precum și cu versiuni diferite de nod.js

API-ul NODE.JS este una dintre cele mai semnificative îmbunătățiri ale NODE.JS 8. Acesta aduce o ABI definită (interfață binară de aplicație) la NODE.JS pentru a-și face mașina virtuală Agnostic. Acest lucru înseamnă că modulele native nu vor funcționa numai cu diferite versiuni NODE.JS utilizând motorul Google V8 JavaScript, dar și cu chakra Microsoft.

Deocamdată, N-API se află într-un stat experimental, ceea ce înseamnă că se pot întâmpla schimbări semnificative atât pentru punerea în aplicare, cât și pentru API. Cu acest domeniu de întreținere a modulelor native sunt încurajați să încerce noua interfață și să ofere feedback.

Dacă sunteți un metru de medule, puteți elibera o versiune N-API a modulului dvs. în paralel cu versiunea principală a modulului. Pentru a face acest lucru, recomandarea oficială este de a publica o versiune a modulului dvs. cu eticheta N-API la NPM.

Pentru a publica o versiune N-API, trebuie să:

  1. Publicați versiunea non-N-API ca normal.
  2. Publicați versiunea N-API:
  • Actualizați versiunea în fișierul pachet.json adăugând o linie și Tag-ul NAPI. - Deci, dacă ați avea 1.0.0 anterior, devine 1.0.0-NAPI
  • Publicați la NPM utilizând NPM Publish --Tag N-API

În acest fel, asigurați-vă că versiunea N-API nu va deveni cea mai recentă versiune, deci dacă cineva instalează modulul dvs., implicit obține versiunea non-N-API.

Fire, Managerul de pachete creat de inginerii Facebook, a fost lansat în octombrie 2016. A încercat să abordeze unele deficiențe ale clientului oficial al NPM, în special devenind mai performant și determinist. Cele mai multe dintre aceste inovații sunt prezentate și în NPM 5.

02. Salut la npm 5

La fel ca firul, NPM 5 a introdus un mecanism de fișiere de blocare - ori de câte ori instalați o nouă dependență de proiect, acesta va fi adăugat automat nu numai pachet.json. , dar un nou fișier numit pachet-lock.json. de asemenea.

Puteți întreba ce diferența este între pachet-lock.json. și npm-shrinkwrap.json. , deoarece NPM-Shrinkwrap a fost în NPM de când pentru totdeauna? Povestea lungă scurtă, ele sunt în esență aceleași, dar pachet-lock.json. este creată automat.

Scopul lor este de a descrie exact ce nPM de dependență trebuie să creeze pentru pachetul dvs. Dacă aveți amândouă, NPM-Shrinkwrap. va avea prioritate. Pe baza recomandării NPM, ar trebui să utilizați npm-shrinkwrap.json. Dacă doriți să o publicați, astfel încât consumatorii dvs. pentru modulul dvs. o vor folosi și el. Pe de altă parte, ar trebui să utilizați pachetul-Lock.json intern - chiar verificat în depozite.

Dar îmbunătățirile la NPM 5 nu s-au oprit cu adăugarea unui fișier de blocare - cu noua versiune, toate modulele pe care le instalați sunt salvate automat și acestea vor fi adăugate atât la dvs. pachet.json. și pachet-lock.json. fişier.

Modul în care funcționează scripturile NPM sa schimbat și un pic. În primul rând, scripturile preinstalate acum rulează înainte de orice altceva, astfel încât să poată modifica directorul NODE_MODALES înainte ca CLI să o citească de fapt. În afară de aceasta, au fost adăugate două scripturi noi - preambalate și postpack. Ambele rulează pe Pack-ul NPM, cât și pe NPM publică, dar nu pe instalarea NPM.

În inima NODE.JS este motorul JavaScript care interpretează codul dvs. JavaScript, creează codul de octet de la acesta și vă permite să rulați aplicația. Cu noua versiune NODE.JS 8, acest lucru a fost actualizat, de asemenea.

03. Actualizat motorul JavaScript

Big news: Node.js will be able to update the V8 engine without a major release

Știri mari: NODE.JS va fi capabil să actualizeze motorul V8 fără o versiune majoră

Cu motorul V8 actualizat, sunt introduse îmbunătățiri majore de performanță - dar mai important, este garantat că are o interfață binară de aplicație compatibilă înainte. Aceasta înseamnă că NODE.JS va putea să actualizeze motorul V8 fără o versiune majoră a nodului.

Acest lucru este crucial, deoarece versiunile mai noi ale motorului V8 vor introduce o nouă conductă de compilator, care va introduce îmbunătățiri suplimentare de performanță la NODE.JS. Această actualizare a fost atât de importantă încât a fost momentul în care data de lansare a NODE.JS 8 a fost amânată.

Conducta actuală este prea complexă și introducerea de noi caracteristici de limbă înseamnă, de obicei, atingerea mai multor părți ale conductei. Cu noua conductă, va deveni mult mai simplă.

Aprinderea, noul interpret și turbofan, noul compilator de optimizare, au fost în curs de dezvoltare de aproape trei ani și jumătate. Acestea sunt fundamentul pe care vor fi construite noi caracteristici lingvistice. Acestea includ experiența pe care echipa V8 la Google a colectat de la măsurarea aplicațiilor JavaScript din viața reală.

04. Bine ati venit Cârlige Async

Pentru a înțelege mai bine ce sunt cârligele Async, să facem un pas înapoi și să trecem în primul rând cu depozitarea locală continuă. Lucrează ca depozitare locală a firului în programarea filetată, dar în nod.js utilizează apeluri pentru a trece contextul.

Imaginați-vă că scrieți o aplicație care aduce un produs din baza de date, apoi mai târziu pe care doriți să o trimiteți în răspunsul dvs. HTML:

 Const CreareNameSpace = necesită ("continuare-locală-stocare"). CreareNamespace
const sesiune = createnamespace ('"App-sesiune")
const db = necesită ('./ db.js')
Funcție onrequest (opțiuni, următor) {
  db.fetchuserbyid (Opțiuni.ID, funcția (eroare, utilizator) {
    Dacă (eroare) {
      Returnați următoarea (eroare)
    }
    sesiune.set ("Utilizator", utilizator)
    Următorul()
  }) 

Mai târziu, dacă doriți să accesați obiectul utilizatorului, tot ce trebuie să faceți este să îl luați de la depozitarea locală:

 const getnamespace = necesită ("continuare-locală-stocare"). Getnamespace
const sesiune = getnamespace ("sesiunea mea")
const rand = necesită ('./ Renders.js')
Funcție Finish (răspuns) {
  const user = sesiune.get ("Utilizator")
  Render ({utilizator: utilizator}). Țeavă (răspuns)
} 

Această tehnică este utilizată pe scară largă de furnizorii de monitorizare a performanțelor aplicațiilor, cum ar fi urmărirea prin RisingStack, pentru a menține contextul de execuție și a colecta informații de monitorizare din sistemele de producție.

Cu cârlige Async, o caracteristică similară este deplasată la NODE.JS Core - ajută la urmărirea cererilor și manipulatoarelor asincrone prin ciclul lor de viață. async_hooks. Modulul oferă un API pentru a înregistra apelurile de apel care urmărește durata de viață a resurselor asincrone create în cadrul unei aplicații NODE.JS.

05. Sprijin îmbunătățit promisiune

Înainte de node.js 8, dacă ați dorit să utilizați modulele de bază într-o aplicație care utilizează promisiuni, a trebuit să înfășurați manual modulele de bază, astfel încât acestea să poată fi folosite în același mod. Arăta așa ceva:

const fs = necesită ('fs')
Funcție de citirePromise (... Args) {
  Returnați o promisiune nouă ((rezolvați, respingeți) = & gt; {
    fs.readfile (... args, (eroare, rezultat) = & gt; {
      dacă (err) {
        returnați rezolvarea (err)
      }
      Rezolvați (rezultatul)
    })
  })
}
ReadFilePromise ('./ Pachet.json', 'UTF-8')
  . Atunci ((res) = & gt; console.log (res))
  .Catch ((err) = & gt; console.log (eroare) 

Cu NODE.JS 8, o nouă metodă Helper este adăugată la modulul Util Core, util.Mromiisificat. Permite API-urile standard de tip NODE.JS standard pentru a fi înfășurate într-o funcție care returnează promisiunile.

Folosind această funcție, fragmentul de mai sus este simplificat și devine acest lucru:

 const fs = necesită ('fs')
const promidify = necesită ("util"). Promisiune
ReadfilePromise = Promisify (FS.READFILE)
ReadFilePromise ('./ Pachet.json', 'UTF-8')
  . Atunci ((res) = & gt; console.log (res))
  .Catch ((err) = & gt; console.log (eroare) 

06. Mai multe tampoane sigure

Înainte de node.js versiunea 8, tampoane alocate utilizând noul constructor tampon (număr) nu au inițializat spațiul de memorie cu zerouri. Ca rezultat, noile instanțe tampon ar putea conține informații sensibile, ducând la probleme grave de securitate - chiar și modulele populare, cum ar fi mongoose, WS sau modulul de solicitare, au fost afectate.

Dar cum am ajuns acolo? Când JavaScript a fost mutat din browser către partea serverului, a fost necesară o prelucrare rapidă și ușoară a datelor - astfel încât clasa tampon a fost adăugată. Tamponul este o gamă largă de date binare. Când este utilizat împreună cu constructorul care cere dimensiunea noului tampon, a rezervat doar spațiul de memorie, dar nu la curățat.

Pe măsură ce serverul dvs. poate servi în același timp multiple utilizatori (spre deosebire de browserul dvs.), este posibil ca spațiul de memorie proaspăt alocat să conțină informații sensibile de la alți utilizatori (chiar parole!), Și pot fi potențial expuse unui atacator.

Deși a fost o decizie intenționată de a stimula performanța noii creații de tampon, pentru majoritatea dintre noi, nu a fost utilizarea dorită - chiar dacă a fost documentată. Din acest motiv, începând cu NODE.JS 8, tampoane alocate utilizând un nou tampon (număr) sau tampon (număr) vor fi umplute automat cu zerouri.

07. Modificări în depanare

Înainte de node.js 8, dacă ați vrut să depanați aplicațiile NODE.JS, una dintre cele mai ușoare soluții a fost să începeți debuggerul încorporat, utilizând NODE Debug index.js. Cu nod.js 8, acest lucru este eliminat și înlocuit de inspector de noduri. Puteți utiliza în continuare debuggerul CLI, dar va fi eliminat în scurt timp.

De acum înainte, ar trebui să utilizați nod - Index , sau nodul --InSpect-BRK Index.js Dacă doriți ca debuggerul să pună un punct de întrerupere pe prima linie a aplicației. Odată ce o conduceți, veți primi un link WebSocket pe care Google Chrome îl poate utiliza pentru a conecta depanarea.

Ar trebui să mergeți la Chrome: // inspectați În browserul dvs. Chrome și va recunoaște automat aplicația Running NODE.JS, permițându-vă să vă conectați. După ce v-ați conectat la procesul dvs., veți primi debuggerul lui Chrome pentru a inspecta aplicația dvs. NODE.JS.

08. Introducerea codurilor de eroare statice

Anterior, dacă ați dorit să verificați o eroare pe care ați primit-o în timpul execuției și să acționați în mod corespunzător, în majoritatea cazurilor a trebuit să verificați mesajul de eroare. Aceasta a fost o eroare predispusă, deoarece mesajele de eroare s-au schimbat cu noile versiuni NODE.JS.

Cu NODE.JS 8, codurile de eroare statice au fost atribuite majorității erorilor - este încă un lucru în desfășurare, dar odată ce ați terminat, aceste coduri de eroare nu se vor schimba, chiar dacă mesajul din eroare .

De exemplu, noul introdus Whatwg URL API. va arunca an Err_invalid_url. Eroare în următorul fragment, deoarece parametrul nu este o adresă URL validă:

 const url = necesită ("url"). URL
const myurl = nou URL ('/ Foo') 

După cum puteți vedea, lansarea actualizării NODE.JS 8 a adus o mulțime de îmbunătățiri noi și interesante comunității JavaScript. Pentru a începe experimentarea cu toate aceste caracteristici noi, vă îndreptați spre nodejs.org. , Descărcați node.js 8 binar și începeți să jucați cu noul dvs. Toolset!

Acest articol a apărut inițial în revista netă Problema 296. Cumpărați-l aici .

Articole similare:

  • 20 module node.js trebuie să știi
  • 30 de extensii cromate pentru designeri de web și devs
  • 3 moduri de top pentru a construi un prototip al site-ului web

să - Cele mai populare articole

Asigurați-vă propriul stilou cu doar 4 articole de uz casnic (serios)

Sep 11, 2025

(Credit de imagine: Curtis Olly) Știați că este posibil să faceți propriul stilou pentru iPad sau tabletă? Sunt..


Depozitare cloud pentru fotografii și imagini: Cum de a alege cel mai bun nor pentru munca ta

Sep 11, 2025

(Credit Imagine: Getty Images) Cloud Storage oferă o tonă de beneficii pentru creații de toate tipurile, în speci..


Cum să vă opriți ochelarii în ceață când purtați o mască de față

Sep 11, 2025

(Credit Imagine: Getty Images) Dacă ochelarii tăi păstrează încețoșați când purtați o mască de față, nu ..


Cum să transmiteți sunetul într-o pictură

Sep 11, 2025

Deși nu este posibil să se afișeze sunetul într-o imagine convențională, în continuare (interactivitate multimedia deopart..


Strategia de experiență a utilizatorului master

Sep 11, 2025

Strategia UX. Este un proces care ar trebui să fie pornit înainte de începerea proiectării sau dezvoltării unui ..


Creați o scenă de oraș aglomerată în Illustrator

Sep 11, 2025

Cel mai bun oraș este un oraș aglomerat, dar atmosfera aglomerată nu este un lucru ușor de capturat cu succes. Cu toate acest..


Cum se face o platformă flexibilă

Sep 11, 2025

Rigurile de panglică sunt destul de comune în 3D Art. Producția de producție în aceste zile. Ei au un comport..


Cum să combinați hărți sculptate și vopsite de deplasare

Sep 11, 2025

Uneori este mai eficient să combinați diferite hărți de deplasare la timp, mai degrabă decât să le scufundați pe toți. U..


Categorii