Sisih server JavaScript Node.js 17.0 release

Node.js 17.0, platform kanggo mbukak aplikasi jaringan ing JavaScript, dirilis. Node.js 17.0 minangka cabang dhukungan biasa sing bakal terus nampa nganyari nganti Juni 2022. Ing dina sing bakal teka, stabilisasi cabang Node.js 16 bakal rampung, sing bakal nampa status LTS lan bakal didhukung nganti April 2024. Pangopènan cabang LTS sadurunge Node.js 14.0 bakal nganti April 2023, lan taun sadurunge cabang LTS pungkasan 12.0 nganti April 2022.

dandan utama:

  • Mesin V8 wis dianyari kanggo versi 9.5.
  • Implementasine varian saka API dhasar adhedhasar panggunaan antarmuka komputasi asynchronous Janji wis terus. Saliyane API Janji Janji lan Aliran Janji sing ditawakake sadurunge, Node.js 17.0 ngenalake Readline Promise API kanggo maca data baris kanthi nggunakake modul readline. impor * minangka readline saka 'simpul: readline / janji'; ngimpor {stdin minangka input, stdout minangka output} saka 'proses'; const rl = readline.createInterface({input, output }); const answer = ngenteni rl.question('Apa menurutmu Node.js?'); console.log('Matur nuwun kanggo umpan balik sing penting: ${jawaban}'); rl.close();
  • Pustaka OpenSSL sing diwenehake wis dianyari menyang versi 3.0 (garpu quictls/openssl kanthi dhukungan protokol QUIC digunakake).
  • Ngaktifake versi Node.js kanggo ditampilake ing tumpukan tilak sing output ing cilik saka kasalahan fatal sing nimbulaké aplikasi kanggo siksa.

Kajaba iku, kita bisa nyebutake penghapusan rong kerentanan ing cabang Node.js saiki (CVE-2021-22959, CVE-2021-22960), sing ndadekake bisa nindakake serangan "HTTP Request Smuggling" (HRS), sing ngidini kita nggabung menyang isi panjalukan pangguna liyane sing diproses ing thread sing padha ing antarane frontend lan backend (contone, kode JavaScript sing ala bisa dilebokake menyang sesi pangguna liyane). Rincian bakal dicethakaké mengko, nanging saiki kita mung ngerti manawa masalah kasebut disebabake dening salah nangani spasi antarane jeneng header HTTP lan titik loro, uga penanganan sing beda saka carriage return lan karakter feed baris ing blok parameter sing digunakake nalika ngirim. awak panjalukan ing bagean ing mode "chunked" "

Elinga yen platform Node.js bisa digunakake kanggo dhukungan sisih server aplikasi Web lan kanggo nggawe program jaringan klien lan server biasa. Kanggo nggedhekake fungsionalitas aplikasi kanggo Node.js, koleksi modul gedhe wis disiapake, ing ngendi sampeyan bisa nemokake modul kanthi implementasi HTTP, SMTP, XMPP, DNS, FTP, IMAP, server POP3 lan klien, modul kanggo integrasi. karo macem-macem kerangka web, WebSocket lan Ajax handler , konektor kanggo DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mesin template, mesin CSS, implementasine saka algoritma kriptografi lan sistem wewenang (OAuth), XML parser.

Kanggo mesthekake proses akeh panjalukan paralel, Node.js nggunakake model eksekusi kode bedo adhedhasar penanganan acara non-blocking lan definisi panangan callback. Cara sing didhukung kanggo sambungan multiplexing yaiku epoll, kqueue, /dev/poll, lan pilih. Kanggo multiplexing sambungan, perpustakaan libuv digunakake, sing minangka tambahan kanggo libev ing sistem Unix lan IOCP ing Windows. Pustaka libeio digunakake kanggo nggawe blumbang thread, lan c-ares digabungake kanggo nindakake pitakon DNS ing mode non-blocking. Kabeh panggilan sistem sing nyebabake pamblokiran dieksekusi ing jero kolam benang lan banjur, kaya panangan sinyal, nransfer asil kerjane maneh liwat pipa (pipa) sing ora dijenengi. Eksekusi kode JavaScript diwenehake liwat panggunaan mesin V8 sing dikembangake dening Google (saliyane, Microsoft ngembangake versi Node.js kanthi mesin Chakra-Core).

Ing inti, Node.js mirip karo Perl AnyEvent, Mesin Acara Ruby, kerangka Python Twisted, lan implementasi acara Tcl, nanging loop acara ing Node.js didhelikake saka pangembang lan meh padha karo penanganan acara ing aplikasi web sing mlaku. ing browser. Nalika nulis aplikasi kanggo node.js, sampeyan kudu nimbang spesifik program acara-mimpin, contone, tinimbang nindakake "var hasil = db.query ("pilih ..");" karo ngenteni rampung karya lan pangolahan asil sakteruse, Node.js nggunakake prinsip eksekusi bedo, i.e. kode wis rubah menyang "db.query ("pilih ..", fungsi (asil) {Proses asil});", kang kontrol bakal langsung pass kanggo kode luwih, lan asil query bakal diproses minangka data arrives.

Source: opennet.ru

Add a comment