Itusilẹ ti iru ẹrọ JavaScript ẹgbẹ olupin Node.js 17.0

Node.js 17.0, ipilẹ kan fun ṣiṣe awọn ohun elo nẹtiwọọki ni JavaScript, ti tu silẹ. Node.js 17.0 jẹ ẹka atilẹyin deede ti yoo tẹsiwaju lati gba awọn imudojuiwọn titi di Oṣu Karun ọjọ 2022. Ni awọn ọjọ ti n bọ, imuduro ti ẹka Node.js 16 yoo pari, eyiti yoo gba ipo LTS ati pe yoo ṣe atilẹyin titi di Oṣu Kẹrin 2024. Itọju ẹka LTS ti tẹlẹ ti Node.js 14.0 yoo ṣiṣe titi di Oṣu Kẹrin ọdun 2023, ati ọdun ṣaaju ẹka LTS to kẹhin 12.0 titi di Oṣu Kẹrin 2022.

Awọn ilọsiwaju akọkọ:

  • Enjini V8 ti ni imudojuiwọn si ẹya 9.5.
  • Imuse ti awọn iyatọ ti ipilẹ API ti o da lori lilo wiwo iširo asynchronous Ileri ti tẹsiwaju. Ni afikun si Awọn Ileri Awọn Aago ti a funni tẹlẹ ati Awọn API Awọn ileri Awọn ṣiṣan, Node.js 17.0 ṣafihan API Promise Readline fun kika laini data nipasẹ laini lilo module kika kika. gbe wọle * bi kika kika lati 'node: readline/leri'; gbe wọle {stdin bi titẹ sii, stdout bi o ti wu jade} lati 'ilana'; const rl = readline.createInterface ({itẹwọle, igbejade}); const idahun = duro rl.ibeere ('Kini o ro ti Node.js?'); console.log('O ṣeun fun esi ti o niyelori: ${idahun}'); rl.sunmọ ();
  • Ile-ikawe OpenSSL ti a pese ti ni imudojuiwọn si ẹya 3.0 (quictls/opensl orita pẹlu atilẹyin ilana QUIC ti ṣiṣẹ ni lilo).
  • Ti ṣiṣẹ ẹya Node.js lati ṣe afihan ni awọn itọpa akopọ ti o jade ni ọran ti awọn aṣiṣe apaniyan ti o yori si ifopinsi ohun elo.

Ni afikun, a le darukọ imukuro awọn ailagbara meji ni awọn ẹka lọwọlọwọ ti Node.js (CVE-2021-22959, CVE-2021-22960), eyiti o jẹ ki o ṣee ṣe lati gbe awọn ikọlu “HTTP Ibere ​​Smuggling” (HRS), eyiti gba wa laaye lati gbe sinu awọn akoonu ti awọn ibeere awọn olumulo miiran ti a ṣe ilana ni okun kanna laarin iwaju iwaju ati ẹhin (fun apẹẹrẹ, koodu JavaScript irira le fi sii sinu igba olumulo miiran). Awọn alaye yoo han nigbamii, ṣugbọn fun bayi a mọ nikan pe awọn iṣoro naa jẹ idi nipasẹ mimu ti ko tọ ti awọn aaye laarin orukọ akọsori HTTP ati oluṣafihan, bakanna bi mimu oriṣiriṣi ti ipadabọ gbigbe ati awọn kikọ kikọ laini ni bulọọki paramita ti a lo nigba gbigbe. ara ibeere ni awọn ẹya ni ipo “chunked”

Jẹ ki a ranti pe pẹpẹ Node.js le ṣee lo mejeeji fun atilẹyin ẹgbẹ olupin ti awọn ohun elo wẹẹbu ati fun ṣiṣẹda alabara lasan ati awọn eto nẹtiwọọki olupin. Lati faagun iṣẹ ṣiṣe ti awọn ohun elo fun Node.js, akojọpọ nla ti awọn modulu ti pese, ninu eyiti o le wa awọn modulu pẹlu imuse HTTP, SMTP, XMPP, DNS, FTP, IMAP, awọn olupin POP3 ati awọn alabara, awọn modulu fun iṣọpọ pẹlu orisirisi awọn ilana wẹẹbu, WebSocket ati Ajax handlers , awọn asopọ si DBMS (MySQL, PostgreSQL, SQLite, MongoDB), awọn ẹrọ awoṣe, awọn ẹrọ CSS, awọn imuse ti awọn algorithms cryptographic ati awọn ọna ṣiṣe aṣẹ (OAuth), XML parsers.

Lati rii daju sisẹ ti nọmba nla ti awọn ibeere ti o jọra, Node.js nlo awoṣe ipaniyan koodu asynchronous ti o da lori mimu iṣẹlẹ ti kii ṣe idilọwọ ati asọye ti awọn olutọju ipe. Awọn ọna ti a ṣe atilẹyin fun awọn asopọ pọpọ jẹ epoll, kqueue, /dev/poll, ati yan. Fun multixing asopọ, ile-ikawe libuv ti lo, eyiti o jẹ afikun fun libev lori awọn eto Unix ati IOCP lori Windows. Ile-ikawe libeio ni a lo lati ṣẹda adagun okun, ati c-ares ti ṣepọ lati ṣe awọn ibeere DNS ni ipo ti kii ṣe idinamọ. Gbogbo awọn ipe eto ti o fa idinamọ ni a ṣe ninu adagun okun ati lẹhinna, bii awọn oluṣakoso ifihan agbara, gbe abajade iṣẹ wọn pada nipasẹ paipu ti a ko darukọ (paipu). Awọn ipaniyan ti koodu JavaScript ti pese nipasẹ lilo ẹrọ V8 ti o dagbasoke nipasẹ Google (ni afikun, Microsoft n ṣe agbekalẹ ẹya Node.js pẹlu ẹrọ Chakra-Core).

Ni ipilẹ rẹ, Node.js jẹ iru si Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, ati imuse iṣẹlẹ iṣẹlẹ Tcl, ṣugbọn iṣẹlẹ iṣẹlẹ ni Node.js ti wa ni pamọ lati ọdọ olupilẹṣẹ ati ki o jọmọ mimu iṣẹlẹ ni ohun elo wẹẹbu nṣiṣẹ ni browser. Nigbati o ba kọ awọn ohun elo fun node.js, o nilo lati ṣe akiyesi awọn pato ti siseto-iṣẹlẹ, fun apẹẹrẹ, dipo ṣiṣe "var esi = db.query ("yan ...");" pẹlu idaduro fun ipari iṣẹ ati ṣiṣe atẹle ti awọn abajade, Node.js lo ilana ti ipaniyan asynchronous, ie. koodu naa ti yipada si "db.query ("yan ...", iṣẹ (abajade) {sisẹ abajade});", ninu eyiti iṣakoso yoo kọja lẹsẹkẹsẹ si koodu siwaju sii, ati pe abajade ibeere yoo ṣe ilana bi data ti de.

orisun: opennet.ru

Fi ọrọìwòye kun