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

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

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

  • V8 շարժիչը թարմացվել է 9.0 տարբերակին (Node.js 15-ն օգտագործել է թողարկում 8.6), որը թույլ է տալիս կիրառել այնպիսի առանձնահատկություններ, ինչպիսիք են «ինդեքսների» հատկությունը կանոնավոր արտահայտությունների համար (ներառում է զանգված՝ համընկնումների խմբերի մեկնարկային և ավարտական ​​դիրքերով) , Atomics մեթոդը Node.js 16 .waitAsync-ում (Atomics.wait-ի ոչ համաժամանակյա տարբերակ), աջակցություն վերին մակարդակի մոդուլներում await հիմնաբառի օգտագործման համար: Ֆունկցիաների կանչերն արագացվել են այն իրավիճակներում, երբ փոխանցված արգումենտների թիվը չի համապատասխանում ֆունկցիայի մեջ սահմանված պարամետրերին:
  • Timers Promises API-ն կայունացվել է՝ ապահովելով գործառույթների այլընտրանքային փաթեթ՝ ժամանակաչափերի հետ աշխատելու համար, որոնք վերադարձնում են Promise օբյեկտները որպես արդյունք, ինչը վերացնում է util.promisify() օգտագործման անհրաժեշտությունը: ներմուծել {setTimeout } «ժմչփեր/խոստումներից»; async ֆունկցիա run() { await setTimeout(5000); console.log ('Բարև, աշխարհ!'); } run();
  • Ավելացվել է Web Crypto API-ի փորձարարական ներդրում, որը նախատեսված է վեբ հավելվածների կողմից հիմնական գաղտնագրային գործողություններ իրականացնելու համար, ինչպիսիք են գաղտնագրային հեշերի մանիպուլյացիաները, թվային ստորագրությունների ստեղծումն ու ստուգումը, տվյալների կոդավորումն ու վերծանումը տարբեր գաղտնագրման մեթոդների կիրառմամբ և գաղտնագրորեն անվտանգ ստեղծում: պատահական թվեր. API-ն ապահովում է նաև բանալիների ստեղծման և կառավարման գործառույթներ:
  • N-API-ն (API հավելումների մշակման համար) թարմացվել է 8-րդ տարբերակին:
  • Փաթեթի կառավարիչ NPM 7.10-ի նոր թողարկմանն անցում կատարվեց:
  • Կայունացրեց AbortController դասի իրականացումը, որը հիմնված է AbortController Web API-ի վրա և թույլ է տալիս ազդանշանները չեղարկել ընտրված Promise-ի վրա հիմնված API-ներում:
  • Աղբյուրի քարտեզի ձևաչափի երրորդ տարբերակի աջակցությունը, որն օգտագործվում է գեներացված, մշակված կամ փաթեթավորված մոդուլները սկզբնական կոդով համեմատելու համար, կայունացվել է:
  • Հնացած վեբ API-ների հետ համատեղելիության համար ավելացվել են buffer.atob(data) և buffer.btoa(data) մեթոդները:
  • Սկսվել է M1 ARM չիպով հագեցած Apple-ի նոր սարքերի հավաքների ձևավորումը։
  • Linux հարթակում կոմպիլյատորի տարբերակի պահանջները բարձրացվել են մինչև GCC 8.3:

Հիշեցնենք, որ 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: Կապի մուլտիպլեքսավորման համար օգտագործվում է libuv գրադարանը, որը հավելում է libev-ի համար Unix համակարգերում և IOCP-ի համար Windows-ում: Libeio գրադարանն օգտագործվում է թելերի լողավազան ստեղծելու համար, իսկ c-ares-ը ինտեգրված է DNS հարցումները ոչ արգելափակման ռեժիմում կատարելու համար: Բոլոր համակարգային զանգերը, որոնք առաջացնում են արգելափակում, կատարվում են թելերի լողավազանի ներսում, այնուհետև, ազդանշանի մշակողների նման, իրենց աշխատանքի արդյունքը հետ են տեղափոխում անանուն խողովակի (խողովակի) միջոցով: JavaScript կոդի կատարումն ապահովվում է Google-ի կողմից մշակված V8 շարժիչի օգտագործման միջոցով (ի լրումն, Microsoft-ը մշակում է Node.js-ի տարբերակը Chakra-Core շարժիչով):

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

Բացի այդ, կարելի է նշել, որ Deno ընկերությունը, որը հիմնադրվել է Node.js-ի ստեղծողի կողմից՝ հաջորդ սերնդի Deno պլատֆորմը մշակելու նպատակով, ստացել է 4.9 միլիոն դոլարի ներդրումներ։ Իր նպատակներով Deno-ն նման է Node.js-ին, սակայն փորձում է վերացնել Node.js ճարտարապետության մեջ թույլ տրված կոնցեպտուալ սխալները և օգտվողներին ապահովել ավելի ապահով միջավայր։ Նշվում է, որ Deno-ի բիզնես լուծումները կառուցվելու են ամբողջովին բաց արտադրանքի վրա, իսկ Open Core մոդելը՝ առանձին վճարովի ֆունկցիոնալությամբ, անընդունելի է ընկալվում Deno հարթակի համար։

Source: opennet.ru

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