Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· Node.js 19.0, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript. Node.js 19 ΠΎΡΠ½Π΅ΡΡΠ½ ΠΊ Π²Π΅ΡΠΊΠ΅ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ ΠΈΡΠ½Ρ 2023 Π³ΠΎΠ΄Π°. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π΄Π½ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΡΠΊΠΈ Node.js 18, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΠ°ΡΡΡ LTS ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π°ΠΏΡΠ΅Π»Ρ 2025 Π³ΠΎΠ΄Π°. Π‘ΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠΉ LTS-Π²Π΅ΡΠΊΠΈ Node.js 16.0 ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ Π΄ΠΎ ΡΠ΅Π½ΡΡΠ±ΡΡ 2023 Π³ΠΎΠ΄Π°, Π° ΠΏΠΎΠ·Π°ΠΏΡΠΎΡΠ»ΠΎΠΉ LTS-Π²Π΅ΡΠΊΠΈ 14.0 Π΄ΠΎ Π°ΠΏΡΠ΅Π»Ρ 2023 Π³ΠΎΠ΄Π°.
dandan utama:
- ΠΠ²ΠΈΠΆΠΎΠΊ V8 ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 10.7, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ Π² Chromium 107. ΠΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π²Π΅ΡΠΊΠΎΠΉ Node.js 18 ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ API Intl.NumberFormat, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ formatRange(), formatRangeToParts() ΠΈ selectRange(), Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ², Π½ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΈ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠΎΠΊ ΠΊΠ°ΠΊ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π». Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ llhttp 8.1.0 ΠΈ npm 8.19.2.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«node βwatchΒ» Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Β«node βwatch index.jsΒ» ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ index.js).
- ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ HTTP/HTTPS-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° HTTP 1.1 Keep-Alive, ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Keep-Alive ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ°ΡΡ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΠΌ Π²ΡΡΡΠ°Π²Π»Π΅Π½ Π² 5 ΡΠ΅ΠΊΡΠ½Π΄. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π±ΠΎΡΠ° HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Keep-Alive Π² ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ HTTP-ΡΠ΅ΡΠ²Π΅ΡΠ° Node.js Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Keep-Alive.
- Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½ API WebCrypto, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Ed25519, Ed448, X25519 ΠΈ X448. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ WebCrypto ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ globalThis.crypto ΠΈΠ»ΠΈ require(βnode:cryptoβ).webcrypto.
- Π£Π΄Π°Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ DTrace, SystemTap ΠΈ ETW (Event Tracing for Windows), ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ·Π½Π°Π½ΠΎ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
Platform Node.js bisa digunakake kanggo pangopènan 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. kanthi macem-macem kerangka web, panangan WebSocket lan Ajax , konektor DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mesin template, mesin CSS, implementasi algoritma crypto lan sistem wewenang (OAuth), parser XML.
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