Strežniška izdaja JavaScript Node.js 13.0

Na voljo sprostitev Node.js 13.0,platforme za izvajanje omrežnih aplikacij v JavaScriptu. Hkrati je bila zaključena stabilizacija prejšnje veje Node.js 12.x, ki je prešla v kategorijo izdaj dolgoročne podpore, za katere se posodobitve izdajajo na 4 leta. Podpora za prejšnjo vejo LTS Node.j10.0 2021 bo trajala do aprila 8.0, podpora za zadnjo vejo LTS 2020 pa do januarja XNUMX.

Glavni izboljšave:

  • Motor V8 posodobljen na različico 7.8, ki uporablja nove tehnike optimizacije zmogljivosti, izboljša destrukturiranje objektov, zmanjša porabo pomnilnika in skrajša čas priprave za izvedbo WebAssembly;
  • Popolna podpora za internacionalizacijo in Unicode, ki temelji na knjižnici, je privzeto omogočena ICU (International Components for Unicode), ki razvijalcem omogoča pisanje kode podporni delo z različnimi jeziki in lokali. Modul full-icu je zdaj privzeto nameščen;
  • API stabiliziran Delavske niti, dovoljuje ustvariti večnitne zanke dogodkov. Implementacija temelji na modulu worker_threads, ki omogoča izvajanje kode JavaScript v več vzporednih nitih. Stabilna podpora za API Workers Threads je bila prenesena tudi v vejo LTS Node.js 12.x;
  • Zahteve za platforme so bile povečane. Zdaj za montažo obvezna vsaj macOS 10.11 (zahteva Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Izboljšana podpora za Python 3. Če ima sistem tako Python 2 kot Python 3, se Python 2 še vedno uporablja, vendar je bila dodana možnost gradnje, ko je v sistemu nameščen samo Python 3;
  • Stara izvedba razčlenjevalnika HTTP (»—http-parser=legacy«) je bila odstranjena. Odstranjeni ali zastareli klici in lastnosti FSWatcher.prototype.start(), ChildProcess._channel, metoda open() v objektih ReadStream in WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • Naprej prišel ven posodobitev 13.0.1, ki je hitro odpravila več napak. Zlasti je bila odpravljena težava z npm 6.12.0, ki prikazuje opozorilo o uporabi nepodprte različice.

Spomnimo se, da se lahko platforma Node.js uporablja tako za strežniško podporo spletnih aplikacij kot za ustvarjanje običajnih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je veliko število zbirka modulov, v katerem najdete module z implementacijo strežnikov in odjemalcev HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module za integracijo z različnimi spletnimi ogrodji, upravljalnike WebSocket in Ajax, konektorje na DBMS (MySQL, PostgreSQL, SQLite). , MongoDB), motorji predlog, motorji CSS, implementacije kriptografskih algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Za obravnavo velikega števila vzporednih zahtev Node.js uporablja model izvajanja asinhrone kode, ki temelji na obdelavi dogodkov brez blokiranja in definiranju obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav vključujejo epoll, kqueue, /dev/poll in select. Knjižnica se uporablja za multipleksiranje povezav libuv, ki je nadgradnja nad libev v sistemih Unix in preko IOCP v sistemu Windows. Za ustvarjanje skupine niti se uporablja knjižnica libeio, za izvajanje poizvedb DNS v načinu brez blokiranja c-are. Vsi sistemski klici, ki povzročijo blokiranje, se izvedejo znotraj področja niti in nato, tako kot upravljavci signalov, posredujejo rezultat svojega dela nazaj skozi neimenovano cev. Izvajanje kode JavaScript je zagotovljeno z uporabo mehanizma, ki ga je razvil Google V8 (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 и izvajanje dogodkov v Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obravnavanju dogodkov v spletni aplikaciji, ki se izvaja v brskalniku. Pri pisanju aplikacij za node.js je treba upoštevati specifiko programiranja, ki temelji na dogodkih, na primer namesto “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..«, funkcija (rezultat) {obdelava rezultata});«, v kateri bo nadzor takoj prešel na nadaljnjo kodo, rezultat poizvedbe pa bo obdelan, ko podatki prispejo. .

Vir: opennet.ru

Dodaj komentar