Сервер тараптагы 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-жылдын апрелине чейин, ал эми акыркы LTS 10.0 филиалынан мурунку жыл 2021-жылдын апрелине чейин созулат. 13.x коюу бутагына колдоо ушул жылдын июнь айында аяктайт.

негизги жакшыртуулар:

  • Учуп баратканда же белгилүү бир окуялар болгондо жаратуу мүмкүнчүлүгү турукташтырылган диагностикалык отчеттор, каталар, иштөөнүн начарлашы, эс тутумдун агып кетиши, процессордун оор жүгү, күтүлбөгөн ката чыгышы ж.б. сыяктуу көйгөйлөрдү аныктоого жардам берген окуяларды көрсөтөт.
  • Кошулган эксперименталдык API колдоосу Асинхрондуу жергиликтүү сактагыч кайра чалуулардын жана убадалардын негизинде иштетүүчүлөр менен асинхрондук абалды түзүү үчүн колдонулушу мүмкүн болгон AsyncLocalStorage классын ишке ашыруу менен. AsyncLocalStorage башка тилдердеги жип-локалдык сактагычты эске салып, веб-суроо иштетилип жатканда маалыматтарды сактоого мүмкүндүк берет.
  • Жүктөп жатканда сынамык функция жөнүндө эскертүү билдирүүсү өчүрүлдү модулдар ECMAScript 6 импорттук жана экспорттук билдирүүлөрдү колдонуу менен туташтырылган жана экспорттолгон. Ошол эле учурда, ESM модулдарын ишке ашыруу өзү эксперименталдык бойдон калууда.
  • V8 кыймылдаткычы версияга жаңыртылган 8.1 (1, 2, 3), ал жаңы иштөө оптималдаштырууларын жана жаңы логикалык бириктирүү оператору "???" (сол операнд NULL же аныкталбаган болсо, оң операндды кайтарат жана тескерисинче), "?." оператору касиеттердин же чалуулар чынжырынын бир жолку текшерүүсү үчүн (мисалы, алдын ала текшерүүлөрсүз “db?.user?.name?.length”), локализацияланган аталыштарды алуу үчүн Intl.DisplayName ыкмасы ж.б.
  • Streams API'нин ырааттуулугун жакшыртууга жана Node.js'тин негизги бөлүктөрүнүн жүрүм-турумундагы айырмачылыктарды жоюуга багытталган Streams API кайра кароо жүргүзүлдү. Мисалы, http.OutgoingMessage аракети stream.Writableге жакын, ал эми net.Socket stream.Duplexке окшош. AutoDestroy опциясы демейки боюнча "true" деп коюлган, бул аяктагандан кийин "_destroy" чакырууну билдирет.
  • Кошулган эксперименталдык API колдоосу WASI (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 жана тандоо болуп саналат. Китепкана мультиплекстүү байланыштар үчүн колдонулат libuv, бул үстүнөн бир надстройка болуп саналат libev Unix системаларында жана Windows'до IOCP аркылуу. Китепкана жип бассейнин түзүү үчүн колдонулат libeio, интеграцияланган бөгөттөлбөгөн режимде DNS сурамдарын аткаруу үчүн с-арес. Бөгөттөөгө алып келген бардык системалык чалуулар жип бассейнинин ичинде аткарылат жана андан кийин сигнал иштеткичтери сыяктуу, өз ишинин натыйжасын аты жок түтүк (түтүк) аркылуу кайра өткөрүп беришет. JavaScript кодунун аткарылышы Google тарабынан иштелип чыккан кыймылдаткычтын жардамы менен камсыз кылынат V8 (Мындан тышкары, Microsoft Chakra-Core кыймылдаткычы менен Node.js вариантын иштеп чыгууда).

Негизинен, Node.js алкактарга окшош. Perl AnyEvent, Ruby Event Machine, Python Twisted и ишке ашыруу Tcl ичиндеги окуялар, бирок Node.js ичиндеги окуялар цикли иштеп чыгуучудан жашырылган жана браузерде иштеген веб тиркемесинде окуяны иштетүүгө окшош. node.js үчүн тиркемелерди жазып жатканда, мисалы, "var result = db.query("select..");" кылуунун ордуна, окуяга негизделген программалоонун өзгөчөлүктөрүн эске алышыңыз керек. иштин аяктоосун күтүү жана натыйжаларды андан ары иштетүү менен, Node.js асинхрондук аткаруу принцибин колдонот, б.а. код "db.query("select..", функция (натыйжа) {натыйжаны иштетүү});" түрүнө айландырылат, мында башкаруу заматта кийинки кодго өтөт жана сурамдын натыйжасы маалыматтар келгенде иштетилет. .

Source: opennet.ru

Комментарий кошуу