Node.js 24.0.0 ซึ่งเป็นแพลตฟอร์มสำหรับการรันแอปพลิเคชันเครือข่ายใน JavaScript ได้รับการเปิดตัวแล้ว Node.js 24.0 ได้รับมอบหมายให้สนับสนุนสาขาระยะยาว แต่สถานะนี้จะได้รับการมอบหมายในเดือนตุลาคมเท่านั้น หลังจากการทำให้เสถียรแล้ว Node.js 24.x จะได้รับการสนับสนุนจนถึงวันที่ 30 เมษายน 2028 สาขา LTS ก่อนหน้า Node.js 22.x จะได้รับการสนับสนุนจนถึงเดือนเมษายน 2027 และสาขา LTS ก่อนหน้า 20.x จะได้รับการสนับสนุนจนถึงเดือนเมษายน 2026 การบำรุงรักษาสาขา LTS 18.x จะสิ้นสุดในวันที่ 30 เมษายน 2025 และสาขากลาง Node.js 23.x จะสิ้นสุดในวันที่ 1 มิถุนายน 2025
การปรับปรุงหลัก:
- API ของ AsyncLocalStorage จะใช้คลาส AsyncContextFrame ตามค่าเริ่มต้น ซึ่งได้รับการทำเครื่องหมายว่าเสถียร AsyncContextFrame ใช้กลไกที่มีประสิทธิภาพยิ่งขึ้นในการติดตามบริบทแบบอะซิงโครนัส ซึ่งสามารถปรับปรุงประสิทธิภาพได้อย่างมาก
- ตอนนี้ URLPattern API พร้อมใช้งานเป็นวัตถุทั่วโลกที่สามารถใช้ได้โดยไม่ต้องนำเข้าชัดเจน URLPattern ช่วยให้สามารถตรวจสอบได้ว่า URL ตรงกับรูปแบบเฉพาะหรือไม่ ซึ่งสามารถใช้ในการแยกวิเคราะห์ลิงก์ได้
- กลไกของ Permission Model ได้รับการปรับปรุงและทำให้เสถียรขึ้น ช่วยให้คุณสามารถจำกัดการเข้าถึงทรัพยากรบางส่วนในระหว่างการดำเนินการได้ (เช่น คุณสามารถห้ามการสร้างกระบวนการย่อย จำกัดการเข้าถึงการเขียนหรือการอ่านส่วนต่างๆ ของ FS และปิดการใช้งานส่วนเสริม) แทนที่จะใช้แฟล็ก "--experimental-permission" แบบทดลอง ตอนนี้สามารถใช้แฟล็ก "--permission" เพื่อเปิดใช้งาน Permission Model ได้แล้ว
- ความสามารถของโมดูล node:test (test_runner) ที่ได้รับการออกแบบมาเพื่อสร้างและรันการทดสอบใน JavaScript ที่ส่งคืนผลลัพธ์ในรูปแบบ TAP (Test Anything Protocol) ได้รับการขยายเพิ่มขึ้น ขณะนี้โมดูลจะรอการทดสอบแบบซ้อนกันให้เสร็จสิ้นโดยอัตโนมัติโดยไม่ต้องใช้คำสั่ง await
- ไคลเอนต์ HTTP ที่ไม่ได้เผยแพร่ได้รับการอัปเดตเป็นสาขา 7.x ซึ่งปรับปรุงประสิทธิภาพการทำงานและเพิ่มการรองรับคุณลักษณะ HTTP ใหม่
- เอ็นจิ้น V8 ได้รับการอัปเดตเป็นเวอร์ชัน 13.6 ซึ่งใช้ใน Chromium 136 ฟีเจอร์ใหม่เมื่อเทียบกับรุ่น Node.js ก่อนหน้านี้ ได้แก่ การสนับสนุนอาร์เรย์ Float16Array ที่มีชนิด การจัดการทรัพยากรด้วยตนเอง วิธี RegExp.escape (การหลบหนีสตริงสำหรับ RegExp) ตัวชี้ 64 บิต (Memory64) ใน WebAssembly และวิธี Error.isError
- ตัวจัดการแพ็กเกจ NPM ได้รับการอัปเดตเป็นเวอร์ชัน 11
- การสนับสนุนคอมไพเลอร์ MSVC ได้ถูกยกเลิกแล้ว สำหรับการคอมไพล์บนแพลตฟอร์มนี้ Windows คุณต้องใช้ ClangCL
แพลตฟอร์ม 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 แต่เหตุการณ์วนซ้ำใน Node.js ถูกซ่อนจากนักพัฒนาและคล้ายกับการประมวลผลเหตุการณ์ในเว็บแอปพลิเคชัน ทำงานในเบราว์เซอร์
ที่มา: opennet.ru
