Node.js 13.0 серверлік JavaScript платформасының шығарылымы

Қол жетімді босату Node 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 тұрақтандырылды Жұмысшы жіптері, мүмкіндік беру көп ағынды оқиғалар циклдарын жасаңыз. Іске асыру 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 өңдеушілерін, ДҚБЖ (MySQL, PostgreSQL, SQLite) қосқыштарын таба аласыз. , MongoDB ), үлгілік қозғалтқыштар, CSS қозғалтқыштары, криптографиялық алгоритмдер мен авторизация жүйелерін іске асыру (OAuth), XML талдаушылары.

Параллельді сұраулардың үлкен санын өңдеу үшін Node.js блокталмаған оқиғаларды өңдеуге және кері шақыру өңдеушілерін анықтауға негізделген асинхронды кодты орындау үлгісін пайдаланады. Қосылымдарды мультиплекстеу үшін қолдау көрсетілетін әдістер epoll, kqueue, /dev/poll және таңдауды қамтиды. Кітапхана мультиплекстік қосылымдар үшін пайдаланылады libuv, ол үстіндегі қондырма либев Unix жүйелерінде және Windows жүйесінде IOCP арқылы. Кітапхана ағын пулын жасау үшін пайдаланылады libeio, блокталмаған режимде DNS сұрауларын орындау үшін біріктірілген с-арес. Блоктауды тудыратын барлық жүйелік шақырулар ағындық пул ішінде орындалады, содан кейін сигнал өңдеушілері сияқты өз жұмысының нәтижесін атауы жоқ құбыр арқылы кері жібереді. JavaScript кодының орындалуы Google әзірлеген қозғалтқышты пайдалану арқылы қамтамасыз етіледі V8 (Сонымен қатар, Microsoft Chakra-Core қозғалтқышы бар Node.js нұсқасын әзірлеуде).

Негізінде Node.js фреймворктарға ұқсас Perl AnyEvent, Ruby оқиға машинасы, Python Twisted и жүзеге асыру Tcl ішіндегі оқиғалар, бірақ Node.js ішіндегі оқиғалар циклі әзірлеушіден жасырылған және браузерде іске қосылған веб-бағдарламада оқиғаларды өңдеуге ұқсайды. node.js үшін қосымшаларды жазу кезінде оқиғаға негізделген бағдарламалаудың ерекшеліктерін ескеру қажет, мысалы, “var result = db.query(“select..”);” орындаудың орнына. жұмыстың аяқталуын күтумен және нәтижелерді кейіннен өңдеумен, Node.js асинхронды орындау принципін пайдаланады, яғни. код «db.query («таңдау..», функция (нәтиже) {нәтижені өңдеу});» түрлендіріледі, онда басқару бірден келесі кодқа өтеді және деректер келген кезде сұрау нәтижесі өңделеді. .

Ақпарат көзі: opennet.ru

пікір қалдыру