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

Node.js 21.0 гарсан нь сүлжээний програмуудыг JavaScript дээр ажиллуулах платформ юм. Node.js 21.0 салбарыг 6 сарын турш дэмжинэ. Ойрын өдрүүдэд Node.js 20 салбарыг тогтворжуулах ажил дуусч, LTS статусыг авч, 2026 оны 18.0-р сар хүртэл дэмжигдэх болно. Node.js 2025-ийн өмнөх LTS салбарын засвар үйлчилгээ 16.0 оны 2024-р сар хүртэл, сүүлийн LTS XNUMX-ийн өмнөх жилийн XNUMX оны XNUMX-р сар хүртэл үргэлжилнэ.

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

  • Fetch API нь сүлжээгээр нөөц ачаалах, сервер болон үйлчлүүлэгчийн тал дээр ажиллахад тохиромжтой JavaScript кодыг бичих ажлыг хялбарчлахад зориулагдсан тогтвортой гэж зарласан. Энэхүү хэрэгжилт нь HTTP/1.1 undici клиентийн код дээр үндэслэсэн бөгөөд хөтчүүдэд өгөгдсөн ижил төстэй API-тай аль болох ойрхон байна. API нь fetch() арга болон Headers объектуудыг агуулдаг. Хүсэлт ба хариу нь HTTP толгой, хүсэлт, хариултыг төлөөлдөг. const res = хүлээж авахыг хүлээж байна('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = res.json (); console.log(өгөгдөл); }
  • Сүлжээгээр хүлээн авсан өгөгдлийн урсгалд хандах боломжийг олгодог WebStreams API-ийн дэмжлэг тогтворжсон. API нь файлыг бүхэлд нь татаж авахыг хүлээхгүйгээр сүлжээгээр мэдээлэл ирэх үед өгөгдөлтэй ажилладаг өөрийн боловсруулагчийг нэмэх боломжийг олгодог. Node.js-д ашиглах боломжтой объектуудад ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, болон DecompressionStream орно.
  • Хөтөчтэй нийцтэй WebSocket клиентийн туршилтын хэрэгжилтийг нэмсэн. WebSocket-ийн дэмжлэгийг идэвхжүүлэхийн тулд "--experimental-websocket" гэсэн тугийг өгсөн.
  • CommonJS (Node.js-д зориулагдсан) оронд JavaScript модулиудын ESM (ECMAScript модулиуд, хөтчүүдэд зориулсан модулиудад ашиглагддаг) өгөгдмөл хэрэгжилтийг ашиглах туршилтын горимыг нэмсэн. Өөрчлөлт нь "--input-type" далбаагаар тодорхойлогдсон, package.json доторх "төрөл" талбараар тодорхой тодорхойлогдсон, эсвэл файлын өргөтгөлөөс (.mjs for ESM, .cjs) тодорхой болсон модулиудад өөрчлөлт оруулахгүй. CommonJS-д зориулсан). Гэсэн хэдий ч, CommonJS гэж тодорхой заагаагүй модулиудыг (жишээлбэл, ".js" өргөтгөлтэй) шинэ горим идэвхжсэн үед ESM модулиуд гэж үзэх болно. Шинэ модулийн тохиргоог идэвхжүүлэхийн тулд "--туршилтын-өгөгдмөл төрлийн" тугийг санал болгосон.
  • V8 хөдөлгүүрийг Chromium 11.8-д ашигласан 118 хувилбар болгон шинэчилсэн бөгөөд энэ нь одоо ArrayBuffer.prototype.transfer арга, массивыг бүлэглэх чадвар (groupBy арга) болон тогтмолуудыг боловсруулах WebAssembly зааврыг (i32.add, i32.sub, i32.mul, i64 .add, i64.sub болон i64.mul).
  • Модулуудыг тохируулах дуудлагыг бүртгэх, эхлүүлэхийн тулд globalPreload зохицуулагчийн дэмжлэгийг зогсоосон.
  • fs.writeFile функцэд "угаах" сонголтыг нэмсэн бөгөөд энэ нь бичих үйлдэл бүрийн дараа диск рүү өгөгдлийг хүчээр шахах явдал юм.
  • URL задлан шинжлэх, дуудах API, урсгал, node:fs, HTTP зэрэгтэй холбоотой кодын гүйцэтгэл сайжирсан.
  • Глобал навигаторын объектыг нэмсэн. Жишээлбэл, CPU-ийн цөмийн тооны талаарх мэдээллийг авахын тулд та navigator.hardwareConcurrency шинж чанарыг ашиглаж болно.
  • “—тест” параметрт ажиллуулах тестийг сонгоход зориулсан glob маскуудын дэмжлэг нэмэгдсэн (жишээ нь, та “—test **/*.test.js.” гэж зааж өгч болно).
  • Багцлагдсан багц менежер npm 10.2.0 болон llhttp 9.1.2 задлагч шинэчлэгдсэн.
  • Visual Studio 2019 болон macOS-ийн 11.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 болон сонгох юм. Холболтыг олон талт болгохын тулд 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

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