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

Հասանելի է արձակել Node.js 13.0,պլատֆորմներ՝ JavaScript-ով ցանցային հավելվածներ գործարկելու համար: Միաժամանակ ավարտվել է Node.js 12.x-ի նախորդ մասնաճյուղի կայունացումը, որը տեղափոխվել է երկարաժամկետ աջակցության թողարկումների կատեգորիա, որոնց թարմացումները թողարկվում են 4 տարի ժամկետով։ Node.js 10.0-ի նախորդ LTS մասնաճյուղի աջակցությունը կտևի մինչև 2021 թվականի ապրիլ, իսկ վերջին LTS մասնաճյուղի 8.0-ի աջակցությունը մինչև 2020 թվականի հունվար:

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

  • V8 շարժիչը թարմացվել է տարբերակին 7.8, որն օգտագործում է կատարողականի օպտիմալացման նոր տեխնիկա, բարելավում է օբյեկտների ապակառուցումը, նվազեցնում է հիշողության սպառումը և նվազեցնում է WebAssembly-ի կատարման նախապատրաստման ժամանակը.
  • Միջազգայնացման և գրադարանի վրա հիմնված Unicode-ի ամբողջական աջակցությունը լռելյայն միացված է ICU (International Components for Unicode), որը թույլ է տալիս ծրագրավորողներին գրել կոդ աջակցող աշխատել տարբեր լեզուների և տեղանքների հետ: Full-icu մոդուլն այժմ տեղադրված է լռելյայն.
  • API-ն կայունացել է Աշխատողների թելեր, թույլ տալով ստեղծել բազմաթելային իրադարձությունների օղակներ: Իրականացումը հիմնված է worker_threads մոդուլի վրա, որը թույլ է տալիս գործարկել JavaScript կոդը մի քանի զուգահեռ թելերով։ Workers Threads API-ի կայուն աջակցությունը նույնպես ապահովվել է Node.js 12.x-ի LTS մասնաճյուղում;
  • Բարձրացվել են հարթակների պահանջները. Հավաքման համար հիմա պահանջվում է առնվազն macOS 10.11 (պահանջում է Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Բարելավված աջակցություն Python 3-ի համար: Եթե համակարգն ունի և՛ Python 2, և՛ Python 3, Python 2-ը դեռ օգտագործվում է, սակայն ավելացվել է այն կառուցելու հնարավորությունը, երբ համակարգում տեղադրված է միայն Python 3-ը;
  • HTTP վերլուծիչի հին ներդրումը («—http-parser=legacy») հեռացվել է։ Հեռացված կամ հնացած զանգեր և հատկություններ FSWatcher.prototype.start(), ChildProcess._channel, open() մեթոդ ReadStream և WriteStream օբյեկտներում, request.connection, answer.connection, module.createRequireFromPath();
  • Հետևելով դուրս եկավ թարմացում 13.0.1, որն արագ շտկեց մի քանի սխալներ: Մասնավորապես, npm 6.12.0-ում չաջակցվող տարբերակ օգտագործելու մասին նախազգուշացում ցուցադրելու խնդիրը լուծվել է:

Հիշեցնենք, որ 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

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