Сервер талын JavaScript платформ Node.js 20.0 боломжтой

JavaScript дээр сүлжээний програмуудыг ажиллуулах платформ Node.js 20.0 гарлаа. Node.js 20.0-ийг урт дэмжлэгийн салбарт хуваарилсан боловч тогтворжсоны дараа 20-р сар хүртэл энэ статусыг олгохгүй. Node.js 30.x нь 2026 оны 18-р сарын 2025 хүртэл дэмжигдэх болно. Өмнөх Node.js 16.x LTS салбарын засвар үйлчилгээ 2023 оны 14-р сар хүртэл, өмнөх 30.x LTS салбарын засвар үйлчилгээ 19 оны 1-р сар хүртэл үргэлжилнэ. XNUMX.x LTS салбарыг XNUMX-р сарын XNUMX-нд, Node.js XNUMX.x түр салбарыг XNUMX-р сарын XNUMX-нд саатуулна.

Гол сайжруулалтууд:

  • V8 хөдөлгүүр нь Chromium 11.3-д хэрэглэгддэг 113 хувилбар болж шинэчлэгдсэн. Chromium 19 хөдөлгүүрийг ашигласан Node.js 107 салбартай харьцуулахад String.prototype.isWellFormed болон toWellFormed функцүүд болох Array.prototype нь шинэчлэгдсэн. болон TypedArray.prototype аргууд, Array болон TypedArray объектуудыг өөрчлөх, RegExp дахь "v" туг, ArrayBuffer-ийн хэмжээг өөрчлөх, SharedArrayBuffer-ийн хэмжээг нэмэгдүүлэх дэмжлэг, WebAssembly-д tail-call.
  • Гүйцэтгэх явцад тодорхой нөөцөд хандах хандалтыг хязгаарлах боломжийг олгодог туршилтын зөвшөөрлийн загвар механизмыг санал болгож байна. Ажиллаж байх үед "--туршилтын-зөвшөөрөл" гэсэн тугийг зааж өгснөөр Зөвшөөрлийн загварын дэмжлэгийг идэвхжүүлдэг. Эхний хэрэгжилтэд FS-ийн зарим хэсэг, хүүхдийн процессууд (--зөвшөөрөх-хүүхэд-процесс)-д бичих (--зөвшөөрөх-fs-бичих) болон унших (--зөвшөөрөх-fs-унших) хандалтыг хязгаарлах сонголтыг санал болгосон. , нэмэлтүүд (--no-addons ) болон threads (--allow-worker). Жишээлбэл, /tmp сан руу бичих болон /home/index.js файлыг уншихыг зөвшөөрөхийн тулд та дараахийг зааж өгч болно: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js индекс .js

    Хандалтыг шалгахын тулд process.permission.has() аргыг ашиглахыг зөвлөж байна, жишээлбэл, "process.permission.has('fs.write',"/tmp/test").

  • "--experimental-loader" сонголтоор ачаалагдсан ECMAScript гадаад модулиудын (ESM) зохицуулагчийг үндсэн урсгалаас тусгаарласан тусдаа хэлхээнд ажиллуулж байгаа бөгөөд энэ нь програмын код болон ачаалагдсан ESM модулиудын огтлолцлыг арилгадаг. Хөтөчтэй адил import.meta.resolve() арга нь одоо програм дотроос дуудагдах үед синхроноор ажилладаг. Node.js-ийн дараагийн салбаруудын аль нэгэнд ESM ачаалах дэмжлэгийг тогтвортой функцүүдийн ангилалд шилжүүлэхээр төлөвлөж байна.
  • TAP (Test Anything Protocol) форматаар үр дүнг буцаах JavaScript тестүүдийг үүсгэж ажиллуулахад зориулагдсан node:test (test_runner) модулийг тогтвортой байдалд шилжүүлэв.
  • Тусдаа гүйцэтгэлийн баг байгуулагдсан бөгөөд шинэ салбарыг бэлтгэхдээ URL задлан шинжлэх, fetch() болон EventTarget гэх мэт янз бүрийн ажиллах цагийн бүрэлдэхүүн хэсгүүдийг хурдасгахаар ажиллаж байна. Жишээлбэл, EventTarget-ийг эхлүүлэхэд шаардагдах нэмэлт зардал хоёр дахин буурч, URL.canParse() аргын гүйцэтгэл мэдэгдэхүйц сайжирч, таймеруудын үр ашиг сайжирсан. Нэмж дурдахад C ++ хэл дээр бичигдсэн өндөр хүчин чадалтай URL задлан шинжлэгч - Ada 2.0-ийн хувилбарыг найрлагад оруулсан болно.
  • Нэг гүйцэтгэгдэх файл (SEA, Single Executable Applications) хэлбэрээр програмуудыг хүргэх туршилтын функцийг хөгжүүлэх ажил үргэлжилсээр байна. Гүйцэтгэх файлыг үүсгэхийн тулд одоо JSON тохиргооны файлаас үүсгэсэн blob-г орлуулах шаардлагатай (JavaScript файлыг орлуулахын оронд).
  • Web Crypto API-ийн нийцтэй байдлыг бусад төслүүдийн хэрэгжилттэй сайжруулсан.
  • ARM64 систем дээрх Windows-ийн албан ёсны дэмжлэгийг нэмсэн.
  • Бие даасан WebAssembly програмуудыг үүсгэхэд зориулсан WASI (WebAssembly System Interface) өргөтгөлүүдийг үргэлжлүүлэн дэмжсэн. WASI-ийн дэмжлэгийг идэвхжүүлэхийн тулд командын шугамын тусгай тугийг зааж өгөх хэрэгцээг арилгасан.

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 болон сонгох юм. Холболтыг олон талт болгохын тулд Unix систем дээрх libev болон Windows дээрх IOCP-д зориулсан нэмэлт болох libuv номын санг ашигладаг. Libeio номын сан нь урсгалын сан үүсгэхэд ашиглагддаг, c-ares нь блоклохгүй горимд DNS асуулга явуулахад нэгтгэгддэг. Блоклоход хүргэдэг бүх системийн дуудлагууд нь урсгалын сан дотор хийгдэж, дохионы зохицуулагчид шиг нэргүй хоолойгоор (хоолой) дамжуулан ажлын үр дүнг буцааж шилжүүлдэг. JavaScript кодын гүйцэтгэлийг Google-ийн боловсруулсан V8 хөдөлгүүр ашиглан хангадаг (үүнээс гадна Microsoft нь Chakra-Core хөдөлгүүртэй Node.js хувилбарыг хөгжүүлж байна).

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх