Strežniška platforma JavaScript Node.js 20.0 je na voljo

Izšla je Node.js 20.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 20.0 je bil dodeljen veji dolge podpore, vendar ta status ne bo dodeljen do oktobra, po stabilizaciji. Node.js 20.x bo podprt do 30. aprila 2026. Vzdrževanje prejšnje veje Node.js 18.x LTS bo trajalo do aprila 2025, prejšnje veje 16.x LTS pa do septembra 2023. Podružnica 14.x LTS bo zaprta 30. aprila, vmesna veja Node.js 19.x pa 1. junija.

Glavne izboljšave:

  • Motor V8 je bil posodobljen na različico 11.3, ki se uporablja v Chromiumu 113. Od sprememb v primerjavi z vejo Node.js 19, ki je uporabljala motor Chromium 107, funkciji String.prototype.isWellFormed in toWellFormed, Array.prototype in TypedArray.prototype metode za delo s kopijo pri spremembi predmetov Array in TypedArray, zastavica "v" v RegExp, podpora za spreminjanje velikosti ArrayBuffer in povečanje velikosti SharedArrayBuffer, klic repa v WebAssembly.
  • Predlaga se eksperimentalni mehanizem modela dovoljenj, ki vam omogoča, da med izvajanjem omejite dostop do določenih virov. Podpora za model dovoljenj je omogočena z določitvijo zastavice "--experimental-permission" med izvajanjem. V začetni izvedbi so bile predlagane možnosti za omejitev pisanja (--allow-fs-write) in branja (--allow-fs-read) dostopa do določenih delov FS, podrejenih procesov (--allow-child-process) , dodatki (--no-addons) in niti (--allow-worker). Če želite na primer dovoliti pisanje v imenik /tmp in branje datoteke /home/index.js, lahko podate: vozlišče --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js indeks .js

    Za preverjanje dostopa je priporočljivo uporabiti metodo process.permission.has(), na primer "process.permission.has('fs.write',"/tmp/test").

  • Obdelovalci za zunanje module ECMAScript (ESM), naložene prek možnosti »--experimental-loader«, se zdaj izvajajo v ločeni niti, izolirani od glavne niti, kar odpravlja presečišče kode aplikacije in naloženih modulov ESM. Podobno kot pri brskalnikih se metoda import.meta.resolve() zdaj izvaja sinhrono, ko jo pokličete iz aplikacije. V eni od naslednjih vej Node.js je predviden premik podpore za nalaganje ESM v kategorijo stabilnih funkcij.
  • Modul node:test (test_runner), zasnovan za ustvarjanje in izvajanje testov JavaScript, ki vrnejo rezultate v formatu TAP (Test Anything Protocol), je bil premaknjen v stabilen.
  • Oblikovana je bila ločena ekipa za uspešnost, ki si je v pripravah na novo vejo prizadevala za pospešitev različnih komponent izvajalnega okolja, vključno z razčlenjevanjem URL-jev, fetch() in EventTarget. Na primer, stroški inicializacije EventTarget so bili prepolovljeni, učinkovitost metode URL.canParse() je bila znatno izboljšana in učinkovitost časovnikov je bila izboljšana. Poleg tega je v sestavo vključena izdaja visoko zmogljivega razčlenjevalnika URL - Ada 2.0, napisanega v C ++.
  • Nadaljeval se je razvoj eksperimentalne funkcije za dostavo aplikacij v obliki ene same izvedljive datoteke (SEA, Single Executable Applications). Ustvarjanje izvršljive datoteke zdaj zahteva zamenjavo bloba, ustvarjenega iz konfiguracijske datoteke JSON (namesto zamenjave datoteke JavaScript).
  • Izboljšana združljivost Web Crypto API z implementacijami iz drugih projektov.
  • Dodana uradna podpora za Windows v sistemih ARM64.
  • Nadaljnja podpora za razširitve WASI (WebAssembly System Interface) za ustvarjanje samostojnih aplikacij WebAssembly. Odstranjena je potreba po podajanju posebne zastavice ukazne vrstice za omogočanje podpore WASI.

Platformo Node.js je mogoče uporabiti tako za strežniško vzdrževanje spletnih aplikacij kot za ustvarjanje rednih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je bila pripravljena velika zbirka modulov, v kateri najdete module z implementacijo HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 strežnikov in odjemalcev, module za integracijo z različnimi spletnimi okviri, upravljalniki WebSocket in Ajax, konektorji DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmi za predloge, motorji CSS, implementacijami kripto algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Da bi zagotovil obdelavo velikega števila vzporednih zahtev, Node.js uporablja model izvajanja asinhrone kode, ki temelji na neblokirni obravnavi dogodkov in definiciji obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav so epoll, kqueue, /dev/poll in select. Za multipleksiranje povezav se uporablja knjižnica libuv, ki je dodatek za libev v sistemih Unix in IOCP v sistemu Windows. Knjižnica libeio se uporablja za ustvarjanje skupine niti, c-ares pa je integriran za izvajanje poizvedb DNS v načinu brez blokiranja. Vsi sistemski klici, ki povzročijo blokado, se izvedejo znotraj področja niti in nato, kot upravljalci signalov, prenesejo rezultat svojega dela nazaj skozi neimenovano cev (pipe). Izvajanje kode JavaScript je zagotovljeno z uporabo motorja V8, ki ga je razvil Google (poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core).

V svojem jedru je Node.js podoben ogrodjem Perl AnyEvent, Ruby Event Machine, Python Twisted in implementaciji dogodkov Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obravnavanju dogodkov v delujoči spletni aplikaciji v brskalniku. Ko pišete aplikacije za node.js, morate na primer upoštevati posebnosti programiranja, ki temelji na dogodkih, namesto da naredite "var result = db.query("select..");" s čakanjem na zaključek dela in kasnejšo obdelavo rezultatov Node.js uporablja princip asinhronega izvajanja, tj. koda se preoblikuje v "db.query("select..", function (result) {result processing});", v katerem bo nadzor takoj prešel na nadaljnjo kodo, rezultat poizvedbe pa bo obdelan, ko podatki prispejo.

Vir: opennet.ru

Dodaj komentar