Սերվերի կողմից JavaScript Node.js 14.0 թողարկում

տեղի ունեցավ արձակել Node.js 14.0, JavaScript-ում ցանցային հավելվածներ գործարկելու հարթակներ։ Node.js 14.0-ը պատկանում է երկար սպասարկման մասնաճյուղերին, սակայն այս կարգավիճակը կտրամադրվի միայն հոկտեմբերին՝ կայունացումից հետո։ Node.js 14.0-ի աջակցությունը կլինի իրականացվել է մինչև 2023 թվականի ապրիլ։ Նախորդ Node.js 12.0 LTS մասնաճյուղի սպասարկումը կտևի մինչև 2022 թվականի ապրիլ, իսկ նախկին 10.0 LTS մասնաճյուղը մինչև 2021 թվականի ապրիլ: 13.x բեմականացման մասնաճյուղի աջակցությունը կավարտվի այս տարվա հունիսին:

Հիմնական բարելավումներ:

  • Թռիչքի ժամանակ կամ երբ տեղի են ունենում որոշակի իրադարձություններ առաջացնելու ունակությունը կայունացել է ախտորոշիչ հաշվետվություններ, որոնք արտացոլում են իրադարձություններ, որոնք օգնում են ախտորոշել այնպիսի խնդիրներ, ինչպիսիք են վթարները, կատարողականի անկումը, հիշողության արտահոսքը, պրոցեսորի բարձր բեռնվածությունը, անսպասելի սխալի ելքը և այլն:
  • Ավելացվեց փորձնական API աջակցություն Համաժամեցված տեղային պահոց AsyncLocalStorage դասի ներդրմամբ, որը կարող է օգտագործվել հետադարձ զանգերի և խոստումների վրա հիմնված մշակողների հետ ասինխրոն վիճակ ստեղծելու համար: AsyncLocalStorage-ը թույլ է տալիս պահպանել տվյալներ, մինչ վեբ հարցումը մշակվում է, ինչպես Thread-Local Storage-ը այլ լեզուներով:
  • Հեռացվել է փորձնական գործառույթի նախազգուշացումը բեռնման ժամանակ մոդուլներ ECMAScript 6 թ միացված և արտահանված՝ օգտագործելով ներմուծման և արտահանման հաշվետվությունները: Միևնույն ժամանակ, ESM մոդուլների բուն ներդրումը դեռ փորձնական է:
  • V8 շարժիչը թարմացվել է տարբերակին 8.1 (1, 2, 3), որը ներկայացնում է աշխատանքի նոր օպտիմիզացումներ և ավելացնում նոր հնարավորություններ, ինչպիսին է նոր տրամաբանական միացման օպերատորը «??» (վերադարձնում է աջ օպերանդը, եթե ձախ օպերանդը NULL կամ անորոշ է, և հակառակը), «?»: հատկությունների կամ զանգերի ամբողջ շղթայի միանգամյա ստուգման համար (օրինակ՝ «db?.user?.name?.length»՝ առանց նախնական ստուգումների), տեղայնացված անուններ ստանալու Intl.DisplayName մեթոդը և այլն։
  • Streams API-ն վերանայվել է Streams API-ների հետևողականությունը բարելավելու և Node.js-ի հիմնական մասերի վարքագծի տարբերությունները լուծելու համար: Օրինակ, http.OutgoingMessage-ը նման է հոսքին.Writable և net.Socket to stream.Duplex-ին: AutoDestroy տարբերակը լռելյայն սահմանվել է «true», ինչը նշանակում է, որ «_destroy» կկոչվի ավարտից հետո:
  • Ավելացվեց փորձնական API աջակցություն ՎԱՍԻ (WebAssembly համակարգի ինտերֆեյս), որն ապահովում է ծրագրավորման միջերեսներ օպերացիոն համակարգի հետ անմիջական փոխգործակցության համար (POSIX API ֆայլերի, վարդակների և այլնի հետ աշխատելու համար):
  • նկատմամբ պահանջների ավելացում նվազագույն տարբերակները կոմպիլյատորներ և հարթակներ՝ macOS 10.13 (High Sierra), GCC 6, Windows 7/2008R2-ից ավելի նոր.

Հիշեցնենք, որ Node.js հարթակը կարող է օգտագործվել ինչպես վեբ հավելվածների սերվերի սպասարկման, այնպես էլ սովորական հաճախորդի և սերվերի ցանցային ծրագրեր ստեղծելու համար: Node.js-ի համար հավելվածների ֆունկցիոնալությունը ընդլայնելու համար մեծ մոդուլների հավաքածու, որոնցում կարող եք գտնել HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 սերվերների և հաճախորդների ներդրմամբ մոդուլներ, տարբեր վեբ շրջանակների հետ ինտեգրման մոդուլներ, WebSocket և Ajax մշակիչներ, DBMS-ի միակցիչներ (MySQL, PostgreSQL, SQLite): , MongoDB ), կաղապարների շարժիչներ, CSS շարժիչներ, կրիպտո ալգորիթմների և թույլտվության համակարգերի ներդրում (OAuth), XML վերլուծիչներ։

Զուգահեռաբար մեծ թվով հարցումների մշակումն ապահովելու համար Node.js-ն օգտագործում է կոդի կատարման ասինխրոն մոդել, որը հիմնված է իրադարձությունների չարգելափակման մշակման և հետ կանչի մշակողների սահմանման վրա: Միացումների մուլտիպլեքսավորման աջակցվող մեթոդներն են epoll, kqueue, /dev/poll և select: Գրադարանը օգտագործվում է միացումների մուլտիպլեքսավորման համար լիբուվ, որը վերնաշենք է լիբեվ Unix համակարգերում և IOCP-ով Windows-ում: Գրադարանը օգտագործվում է թելերի լողավազան ստեղծելու համար լիբիո, ինտեգրված ոչ արգելափակող ռեժիմով DNS հարցումներ կատարելու համար գ-արիներ. Բոլոր համակարգային զանգերը, որոնք առաջացնում են արգելափակում, կատարվում են թելերի լողավազանի ներսում, այնուհետև, ազդանշանի մշակողների նման, իրենց աշխատանքի արդյունքը հետ են տեղափոխում անանուն խողովակի (խողովակի) միջոցով: JavaScript կոդի կատարումն ապահովվում է Google-ի կողմից մշակված շարժիչի օգտագործման միջոցով V8 (Բացի այդ, Microsoft-ը մշակում է Node.js տարբերակ Chakra-Core շարժիչով):

Իր հիմքում Node.js-ը նման է շրջանակներին: Perl AnyEvent, Ruby իրադարձությունների մեքենա, Python Twisted и իրականացում իրադարձությունները Tcl-ում, բայց Node.js-ի իրադարձությունների հանգույցը թաքնված է մշակողից և հիշեցնում է իրադարձությունների մշակումը բրաուզերում աշխատող վեբ հավելվածում: Node.js-ի համար հավելվածներ գրելիս պետք է հաշվի առնել իրադարձությունների վրա հիմնված ծրագրավորման առանձնահատկությունները, օրինակ՝ «var result = db.query(«select..»);» անելու փոխարեն: աշխատանքի ավարտին սպասելով և արդյունքների հետագա մշակմամբ, Node.js-ն օգտագործում է ասինխրոն կատարման սկզբունքը, այսինքն. կոդը փոխակերպվում է «db.query(«ընտրել..», ֆունկցիա (արդյունք) {արդյունքների մշակում});», որի դեպքում կառավարումն անմիջապես կանցնի հետագա կոդի, և հարցման արդյունքը կմշակվի, երբ տվյալները կհասնեն: .

Source: opennet.ru

Добавить комментарий