แพลตฟอร์ม JavaScript ฝั่งเซิร์ฟเวอร์ Node.js 18.0 พร้อมใช้งาน

Node.js 18.0 เปิดตัวแล้ว ซึ่งเป็นแพลตฟอร์มสำหรับเรียกใช้แอปพลิเคชันเครือข่ายใน JavaScript Node.js 18.0 จัดอยู่ในประเภทการสนับสนุนระยะยาว แต่สถานะนี้จะได้รับมอบหมายในเดือนตุลาคมเท่านั้นหลังจากความเสถียรแล้ว Node.js 18.x จะได้รับการสนับสนุนจนถึงเดือนเมษายน 2025 การบำรุงรักษาสาขา LTS ก่อนหน้าของ Node.js 16.x จะคงอยู่จนถึงเดือนเมษายน 2024 และปีก่อนสาขา LTS 14.x สุดท้ายจนถึงเดือนเมษายน 2023 สาขา 12.x LTS จะหยุดให้บริการในวันที่ 30 เมษายน และสาขา Staging ของ Node.js 17.x จะหยุดให้บริการในวันที่ 1 มิถุนายน

การปรับปรุงหลัก:

  • เอ็นจิ้น V8 ได้รับการอัปเดตเป็นเวอร์ชัน 10.1 ซึ่งใช้ใน Chromium 101 เมื่อเปรียบเทียบกับ Node.js รุ่น 17.9.0 ขณะนี้มีการรองรับฟีเจอร์ต่างๆ เช่น เมธอด findLast และ findLastIndex สำหรับการค้นหาองค์ประกอบที่เกี่ยวข้องกับส่วนท้ายของ อาร์เรย์ และฟังก์ชัน Intl.supportedValuesOf ปรับปรุง Intl.Locale API การเริ่มต้นฟิลด์คลาสและวิธีการส่วนตัวได้รับการเร่งให้เร็วขึ้น
  • Experimental fetch() API จะเปิดใช้งานโดยค่าเริ่มต้น ซึ่งออกแบบมาสำหรับการโหลดทรัพยากรผ่านเครือข่าย การใช้งานจะขึ้นอยู่กับโค้ดจากไคลเอ็นต์ HTTP/1.1 undici และใกล้เคียงกับ API ที่คล้ายกันที่ให้ไว้ในเบราว์เซอร์มากที่สุด ซึ่งรวมถึงการสนับสนุนอินเทอร์เฟซ FormData, Headers, Request และ Response สำหรับจัดการคำขอ HTTP และส่วนหัวการตอบกลับ const res = รอการดึงข้อมูล ('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = รอ res.json (); console.log(ข้อมูล); }
  • มีการเพิ่มการใช้งานแบบทดลองของ Web Streams API ซึ่งให้การเข้าถึงสตรีมข้อมูลที่ได้รับผ่านเครือข่าย API ช่วยให้สามารถเพิ่มตัวจัดการของคุณเองเพื่อทำงานกับข้อมูลเมื่อข้อมูลมาถึงเครือข่าย โดยไม่ต้องรอให้ดาวน์โหลดไฟล์ทั้งหมด ขณะนี้ออบเจ็กต์ที่พร้อมใช้งานใน Node.js ได้แก่ ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream และ DecompressionStream
  • Blob API ถูกย้ายไปที่เสถียรแล้ว ทำให้คุณสามารถห่อหุ้มข้อมูลดิบที่ไม่เปลี่ยนรูปแบบเพื่อการใช้งานอย่างปลอดภัยในเธรดของผู้ปฏิบัติงานที่แตกต่างกัน
  • BroadcastChannel API ได้รับการปรับปรุงให้เสถียรแล้ว ทำให้คุณสามารถจัดระเบียบการแลกเปลี่ยนข้อความในโหมดอะซิงโครนัสในรูปแบบ "ผู้ส่งรายเดียว - ผู้รับหลายราย"
  • เพิ่มโมดูลทดลอง node:test สำหรับการสร้างและรันการทดสอบใน JavaScript ที่ส่งคืนผลลัพธ์ในรูปแบบ TAP (Test Anything Protocol)
  • มีการสร้างแอสเซมบลีสำเร็จรูปสำหรับ Red Hat Enterprise Linux (RHEL) 8 และการกระจายอื่น ๆ ที่ใช้ Glibc 2.28+ รวมถึง Debian 10 และ Ubuntu 20.04 รวมถึง macOS 10.15+ เนื่องจากปัญหากับรุ่นเครื่องยนต์ V8 การสร้างรุ่น 32 บิตสำหรับ Windows จึงถูกหยุดชั่วคราว
  • มีตัวเลือกการทดลองเพื่อสร้างไฟล์ปฏิบัติการ Node.js ด้วยส่วนประกอบที่ผู้ใช้เลือกซึ่งเริ่มต้นได้เมื่อเริ่มต้น เพื่อกำหนดส่วนประกอบเริ่มต้น ตัวเลือก “--node-snapshot-main” ได้ถูกเพิ่มไปยังสคริปต์บิลด์กำหนดค่า เช่น “./configure —node-snapshot-main=marked.js; โหนดชื่อ"

แพลตฟอร์ม 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 และ select สำหรับการเชื่อมต่อมัลติเพล็กซ์ จะใช้ไลบรารี libuv ซึ่งเป็นส่วนเสริมสำหรับ libev บนระบบ Unix และ IOCP บน Windows ไลบรารี libeio ใช้เพื่อสร้างเธรดพูล และรวม c-ares เพื่อดำเนินการสืบค้น DNS ในโหมดไม่ปิดกั้น การเรียกใช้ระบบทั้งหมดที่ทำให้เกิดการบล็อกจะดำเนินการภายในเธรดพูล จากนั้น เช่นตัวจัดการสัญญาณ ถ่ายโอนผลลัพธ์ของการทำงานกลับผ่านไพพ์ที่ไม่มีชื่อ (ไพพ์) การดำเนินการโค้ด JavaScript มีให้โดยใช้เอ็นจิ้น V8 ที่พัฒนาโดย Google (นอกจากนี้ Microsoft กำลังพัฒนาเวอร์ชันของ Node.js ด้วยเอ็นจิ้น Chakra-Core)

โดยพื้นฐานแล้ว Node.js นั้นคล้ายกับ Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks และ Tcl events แต่ event loop ใน Node.js ถูกซ่อนจากผู้พัฒนาและคล้ายกับการจัดการเหตุการณ์ในเว็บแอปพลิเคชันที่กำลังทำงานอยู่ ในเบราว์เซอร์ เมื่อเขียนแอปพลิเคชันสำหรับ node.js คุณต้องพิจารณาลักษณะเฉพาะของการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ เช่น แทนที่จะทำ "var result = db.query("select..");" ด้วยการรอการทำงานให้เสร็จสิ้นและการประมวลผลผลลัพธ์ที่ตามมา Node.js ใช้หลักการของการดำเนินการแบบอะซิงโครนัสนั่นคือ โค้ดจะถูกแปลงเป็น "db.query("select..", ฟังก์ชัน (ผลลัพธ์) {การประมวลผลผลลัพธ์});" ซึ่งการควบคุมจะส่งผ่านไปยังโค้ดเพิ่มเติมทันที และผลลัพธ์ของคิวรีจะถูกประมวลผลเมื่อข้อมูลมาถึง

ที่มา: opennet.ru

เพิ่มความคิดเห็น