Сервер тараптагы 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 аткарууга даярдоо убактысын кыскартат;
  • Эл аралык жана китепканага негизделген Юникодду толук колдоо демейки боюнча иштетилген ICU (Юникод үчүн эл аралык компоненттер), бул иштеп чыгуучуларга код жазууга мүмкүндүк берет колдоочу ар кандай тилдер жана тилдер менен иштөө. Толук icu модулу азыр демейки боюнча орнотулган;
  • API турукташтырылган Workers Threads, уруксат берүү көп жиптүү окуя циклдерин түзүү. Ишке ашыруу бир нече параллелдүү жиптерде JavaScript кодун иштетүүгө мүмкүндүк берген worker_threads модулуна негизделген. 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, ReadStream жана WriteStream объекттериндеги open() методу, request.connection, response.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 жана тандоо болуп саналат. Китепкана мультиплекстүү байланыштар үчүн колдонулат 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

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