Zerbitzariaren aldeko JavaScript plataforma Node.js 20.0 eskuragarri

Node.js 20.0, JavaScript-en sareko aplikazioak exekutatzeko plataforma, kaleratu da. Node.js 20.0 euskarri luzeko adarra esleitu da, baina egoera hori ez da urrira arte esleituko, egonkortu ondoren. Node.js 20.x 30ko apirilaren 2026era arte onartuko da. Aurreko Node.js 18.x LTS adarraren mantentze-lanak 2025eko apirilera arte iraungo du, eta aurreko 16.x LTS adarra 2023ko irailera arte. 14.x LTS adarra apirilaren 30ean mantenduko da, eta Node.js 19.x behin-behineko adarra ekainaren 1ean.

Hobekuntza nagusiak:

  • V8 motorra Chromium 11.3-n erabiltzen den 113 bertsiora eguneratu da. Chromium 19 motorra erabiltzen zuen Node.js 107 adarrarekin alderatuta dauden aldaketetatik String.prototype.isWellFormed eta toWellFormed funtzioak, Array.prototype. eta TypedArray.prototype metodoak Array eta TypedArray objektuak aldatzean kopiarekin lan egiteko, "v" bandera RegExp-en, ArrayBuffer tamaina aldatzeko laguntza eta SharedArrayBuffer-en tamaina handitzeko, tail-call WebAssembly-n.
  • Baimen Ereduaren mekanismo esperimental bat proposatzen da, exekuzioan zenbait baliabidetara sarbidea mugatzeko aukera ematen duena. Baimen-ereduaren euskarria abiarazten denean "--experimental-permission" marka zehaztuta gaituta dago. Hasierako inplementazioan, idazketa (--allow-fs-write) eta irakurtzeko (--allow-fs-read) sarbidea mugatzeko aukerak proposatu ziren FSren zenbait ataletara, haur prozesuetara (--allow-child-process) , gehigarriak (--no-addons ) eta hariak (--allow-worker). Adibidez, /tmp direktorioan idazteko eta /home/index.js fitxategia irakurtzeko aukera izateko, honako hauek zehaztu ditzakezu: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Sarbidea egiaztatzeko, process.permission.has() metodoa erabiltzea gomendatzen da, adibidez, "process.permission.has('fs.write',"/tmp/test").

  • "--experimental-loader" aukeraren bidez kargatutako ECMAScript kanpoko moduluen (ESM) kudeatzaileak orain aparteko hari batean exekutatzen dira, hari nagusitik isolatuta, eta horrek aplikazio-kodearen eta kargatutako ESM moduluen arteko elkargunea ezabatzen du. Arakatzaileen antzera, import.meta.resolve() metodoa orain sinkronoki exekutatzen da aplikazio batetik deitzen denean. Node.js-en hurrengo adarretako batean, ESM kargatzeko euskarria funtzio egonkorren kategoriara eramatea aurreikusten da.
  • Node:test (test_runner) modulua, TAP (Test Anything Protocol) formatuan emaitzak itzultzen dituzten JavaScript probak sortzeko eta exekutatzeko diseinatua, egonkorra eraman da.
  • Errendimendu-talde bereizi bat osatu da, eta, adar berria prestatzeko, exekuzio-denborako hainbat osagai bizkortzeko lan egin du, besteak beste, URL analizatzea, fetch() eta EventTarget. Esate baterako, EventTarget hasieratzeko kostua erdira murriztu da, URL.canParse() metodoaren errendimendua nabarmen hobetu da eta tenporizadoreen eraginkortasuna hobetu da. Horrez gain, errendimendu handiko URL analizatzaile baten kaleratzea - ​​Ada 2.0, C ++-n idatzia, konposizioan sartzen da.
  • Aplikazioak fitxategi exekutagarri bakar baten moduan (SEA, Single Executable Applications) garatzen jarraitu da. Orain exekutagarri bat sortzeko JSON konfigurazio fitxategi batetik sortutako blob bat ordezkatu behar da (JavaScript fitxategi bat ordezkatu beharrean).
  • Web Crypto APIaren bateragarritasuna hobetu da beste proiektuetako inplementazioekin.
  • Windows-erako laguntza ofiziala gehitu da ARM64 sistemetan.
  • WebAssembly aplikazio independenteak sortzeko WASI (WebAssembly System Interface) luzapenetarako laguntza etengabea. WASI euskarria gaitzeko komando lerroko bandera berezi bat zehazteko beharra kendu da.

Node.js plataforma web aplikazioen zerbitzariaren mantentze-lanetarako eta bezero eta zerbitzarien sareko programa arruntak sortzeko erabil daiteke. Node.js aplikazioen funtzionaltasuna zabaltzeko, modulu bilduma handi bat prestatu da, eta bertan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 zerbitzariak eta bezeroak inplementatzen dituzten moduluak aurki ditzakezu, integratzeko moduluak. hainbat web-esparrurekin, WebSocket eta Ajax kudeatzaileekin, DBMS konektoreekin (MySQL, PostgreSQL, SQLite, MongoDB), txantiloi-motorrekin, CSS motorrekin, kripto-algoritmoen eta baimen-sistemen inplementazioekin (OAuth), XML analizatzaileekin.

Eskaera paralelo ugariren prozesamendua ziurtatzeko, Node.js-ek kode asinkronoaren exekuzio-eredu bat erabiltzen du blokeatzen ez den gertaeren kudeaketan eta dei-itzuliaren kudeatzaileen definizioan oinarrituta. Konexioak multiplexatzeko onartzen diren metodoak epoll, kqueue, /dev/poll eta select dira. Konexio-multiplexatzeko, libuv liburutegia erabiltzen da, hau da, libev-en gehigarria Unix sistemetan eta IOCP Windows-en. Libeio liburutegia hari multzo bat sortzeko erabiltzen da, eta c-ares integratuta dago DNS kontsultak blokeatu gabeko moduan egiteko. Blokeoa eragiten duten sistema-dei guztiak hari multzoaren barruan exekutatzen dira eta, ondoren, seinale-kudeatzaileak bezala, beren lanaren emaitza izenik gabeko kanalizazio baten bidez (hodia) transferitzen dute. JavaScript kodearen exekuzioa Googlek garatutako V8 motorra erabiliz ematen da (gainera, Microsoft Node.js bertsio bat garatzen ari da Chakra-Core motorrekin).

Funtsean, Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted esparruen eta Tcl gertaeren inplementazioaren antzekoa da, baina Node.js-en gertaeren begizta garatzaileari ezkutatuta dago eta exekutatzen ari den web aplikazio batean gertaeren kudeaketaren antza du. nabigatzailean. Node.js aplikazioak idaztean, gertaerak gidatutako programazioaren berezitasunak kontuan hartu behar dituzu, adibidez, "var result = db.query("select..");" egin beharrean. lana amaitu eta ondorengo emaitzak prozesatzeko zain egonda, Node.js-ek exekuzio asinkronoaren printzipioa erabiltzen du, hau da. kodea "db.query("hautatu..", funtzioa (emaitza) {emaitza prozesatzea});, eta bertan kontrola berehala pasako da beste kode batera, eta kontsultaren emaitza datuak iristen diren heinean prozesatu egingo da.

Iturria: opennet.ru

Gehitu iruzkin berria