มีอะไรใหม่ใน Node.js 21: ค้นพบคุณสมบัติและการอัปเดตล่าสุด

เผยแพร่แล้ว: 2024-03-26

เนื่องจากระบบนิเวศแพ็คเกจขนาดใหญ่ การสนับสนุนชุมชนที่แข็งแกร่ง และความเข้ากันได้ข้ามแพลตฟอร์ม Node.js จึงถูกใช้โดย 1.4% ถึง 2.22% ของเว็บไซต์ทั่วโลก ข้อมูลนี้นับประมาณ 30 ล้านเว็บไซต์ [i]

เป็นเวลากว่าทศวรรษแล้วที่ Node.js มีบทบาทสำคัญในการพัฒนาเว็บ โดยให้บริการภาษา JavaScript แบบครบวงจรสำหรับการเขียนสคริปต์ทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ โมเดล I/O แบบอะซิงโครนัสและไม่มีการบล็อกช่วยให้มั่นใจได้ถึงประสิทธิภาพและประสิทธิภาพสูง ทำให้เหมาะสำหรับการจัดการการเชื่อมต่อที่เกิดขึ้นพร้อมกัน

นอกจากนี้ Node.js ยังใช้ประโยชน์จากรันไทม์ V8 JavaScript ส่งผลให้ดำเนินการได้รวดเร็ว ด้วยความสามารถในการปรับขนาดที่เป็นแกนหลัก Node.js จึงเหมาะอย่างยิ่งสำหรับแอปพลิเคชันแบบเรียลไทม์และสถาปัตยกรรมไมโครเซอร์วิส ฟีเจอร์ทั้งหมดนี้ทำให้เป็นตัวเลือกสำหรับนักพัฒนาที่ต้องการสร้างเว็บแอปพลิเคชันที่ปรับขนาดได้ มีประสิทธิภาพ และทันสมัย

อย่างไรก็ตาม ในวันที่ 17 ตุลาคม 2023 Node.js 21 เวอร์ชันล่าสุดได้เปิดตัวพร้อมกับการปรับปรุงภายในต่างๆ และฟีเจอร์ใหม่บางประการที่ผู้ใช้ต้องเผชิญ การอัปเดตนี้จัดลำดับความสำคัญของการปรับปรุงประสิทธิภาพผ่านการดำเนินการรันไทม์ที่ได้รับการปรับปรุงให้เหมาะสมและลดโอเวอร์เฮดของหน่วยความจำ นอกจากนี้ยังรวมการสนับสนุนที่ได้รับการปรับปรุงสำหรับโมดูล ECMAScript และการบูรณาการอย่างราบรื่นกับเทคโนโลยีเว็บล่าสุด

ในบล็อกโพสต์นี้ เราจะเพิ่มบริบทเพิ่มเติมเกี่ยวกับการปรับปรุงที่โดดเด่นและการอัปเดตฟีเจอร์ใน Node.js 21

มาดำน้ำกันเถอะ!

9 ไฮไลท์ของ Node.js 21 รุ่นล่าสุด

มีอะไรใหม่ใน Node.js 21: ค้นพบคุณสมบัติและการอัปเดตล่าสุด

1. อัปเดตเป็น V8 JavaScript Engine

การปรับปรุงที่สำคัญใน Node.js 21 คือการอัปเกรดกลไก V8 เป็นเวอร์ชัน 11.8 การอัปเดตนี้ไม่เพียงแต่นำมาซึ่งประสิทธิภาพที่ดีขึ้นเท่านั้น แต่ยังแนะนำคุณลักษณะ JavaScript ที่โดดเด่นหลายประการอีกด้วย

สิ่งที่น่าสังเกตอีกอย่างหนึ่งคือการแนะนำการจัดกลุ่มอาร์เรย์ ซึ่งช่วยให้สามารถรวบรวมข้อมูลที่คล้ายกันออกเป็นกลุ่มต่างๆ ผ่านการใช้วิธีการเช่นObject.groupBy()และMap.groupBy()นอกจากนี้ ยังมีการนำ API แบบเป็นโปรแกรมใหม่ArrayBuffer.prototype.transferมาใช้เพื่ออำนวยความสะดวกในการโอนความเป็นเจ้าของ ArrayBuffers รุ่นนี้ยังเพิ่มประสิทธิภาพการจัดสรรใหม่และจัดการกับการแปลง ArrayBuffers ที่ปรับขนาดได้ให้เป็นรายการที่มีความยาวคงที่

นอกจากนี้ การอัปเดตยังขยายการสนับสนุน WebAssembly ด้วยการรวมนิพจน์ const แบบขยาย ขยายขีดความสามารถของ Node.js ในการใช้ประโยชน์จากความก้าวหน้าล่าสุดในเทคโนโลยีเว็บและฟังก์ชันการทำงานของ JavaScript

2. การดึงข้อมูลและสตรีมเว็บที่เสถียร

Node.js 21 ทำให้การดึงข้อมูลและ WebStreams API มีความเสถียร โดยเปลี่ยนจากสถานะทดลองเป็นเสถียรและพร้อมสำหรับการใช้งานจริง หากคุณใช้ API เหล่านี้ในเวอร์ชันก่อนหน้านี้ ตอนนี้คุณสามารถรวมเข้ากับเวิร์กโฟลว์การผลิตของคุณได้อย่างมั่นใจ

API การดึงข้อมูลและ WebStreams มอบแนวทางร่วมสมัยและสม่ำเสมอในการโต้ตอบกับทรัพยากร HTTP และสตรีมภายในสภาพแวดล้อม Node.js โดยเป็นไปตามมาตรฐานเว็บที่กำหนดไว้ ความเสถียรนี้ช่วยให้แน่ใจว่านักพัฒนาใช้คุณสมบัติเหล่านี้ในวิธีที่เชื่อถือได้และเป็นมาตรฐานในการจัดการการดึงข้อมูลและการสตรีมแบบอะซิงโครนัสในแอปพลิเคชัน Node.js ของตน

3. การแนะนำแฟล็กการทดลองใหม่สำหรับโมดูล

ในรุ่น Node.js 21 สิ่งที่น่าสังเกตเพิ่มเติมคือการแนะนำการตั้งค่าสถานะ–experimental-default-typeซึ่งออกแบบมาเพื่อให้นักพัฒนาสามารถควบคุมพฤติกรรมเริ่มต้นสำหรับไฟล์อินพุตที่ไม่ได้กำหนดไว้อย่างชัดเจนว่าเป็นโมดูล ES หรือ CommonJS ได้ดียิ่งขึ้น

ในกรณีที่ไม่มีคุณลักษณะแฟล็กนี้ อินพุตดังกล่าวจะถูกตีความตามอัตภาพว่าเป็น CommonJS ด้วยการแนะนำ–experimental-default-type=moduleตอนนี้นักพัฒนามีตัวเลือกในการเปิดใช้งานการใช้งานโมดูล ES ที่ครอบคลุมในสถานการณ์เฉพาะ ซึ่งรวมถึงกรณีที่อินพุตสตริงถูกส่งผ่าน –eval หรือ STDIN โดยเฉพาะอย่างยิ่งหากไม่ได้ระบุ–input-type

นอกจากนี้ เมื่อต้องจัดการกับไฟล์ที่ลงท้ายด้วย .js หรือไฟล์ที่ไม่มีนามสกุล แฟล็กจะเข้ามามีบทบาทเมื่อไม่มีไฟล์ package.json ที่เกี่ยวข้อง หรือฟิลด์พาเรนต์ package.json ที่ใกล้ที่สุดไม่มีฟิลด์ 'type' (ยกเว้นภายในไดเร็กทอรี node_modules ). การเพิ่มประสิทธิภาพนี้ช่วยให้นักพัฒนามีความยืดหยุ่นในการทดลองและนำโมดูล ES มาใช้อย่างกว้างขวางมากขึ้น โดยให้แนวทางการจัดการโมดูลที่เหมาะสมและปรับแต่งได้

4. ไคลเอนต์ Websocket ในตัว

ใน Node.js 21 การปรับปรุงคุณสมบัติที่โดดเด่นอีกอย่างหนึ่งอยู่ในรูปแบบของไคลเอนต์ WebSocket ในตัว ซึ่งนำเสนอการใช้งาน WebSocket ที่เข้ากันได้กับเบราว์เซอร์รุ่นทดลอง คุณสมบัตินี้ช่วยให้นักพัฒนาโต้ตอบกับเซิร์ฟเวอร์ WebSocket ภายในแอปพลิเคชัน Node.js ได้อย่างราบรื่น เพื่อเปิดใช้งานฟังก์ชันนี้ นักพัฒนาสามารถใช้ แฟล็ก –experimental-websocket

อย่างไรก็ตาม สิ่งสำคัญที่ควรทราบก็คือ เนื่องจากเป็นคุณลักษณะทดลอง การใช้งานจึงอาจเปลี่ยนแปลงได้ในรุ่นต่อๆ ไป เนื่องจากจะต้องได้รับการปรับปรุงและรักษาเสถียรภาพตามความคิดเห็นของผู้ใช้และมาตรฐานที่เปลี่ยนแปลงไป การเปิดตัวไคลเอนต์ WebSocket ในตัวช่วยลดความยุ่งยากในการรวมการสื่อสาร WebSocket เข้ากับแอปพลิเคชัน Node.js สิ่งนี้ทำให้นักพัฒนามีวิธีที่สะดวกและเป็นมาตรฐานในการสร้างและจัดการการเชื่อมต่อ WebSocket ในขณะเดียวกันก็รับทราบลักษณะการพัฒนาของฟีเจอร์นี้ในระหว่างระยะทดลอง

5. Node.js Test Runner รองรับ Globs แล้ว

การอัปเดต Node.js 21 ล่าสุดแนะนำการรองรับ globs ในตัวดำเนินการทดสอบ การปรับปรุงนี้ช่วยให้นักพัฒนาสามารถใช้ประโยชน์จากนิพจน์ glob เมื่อระบุพารามิเตอร์ –test ซึ่งเป็นวิธีดำเนินการทดสอบที่มีประสิทธิภาพและยืดหยุ่นยิ่งขึ้น ด้วยคุณสมบัตินี้ นักพัฒนาสามารถใช้รูปแบบ glob ที่หลากหลายเพื่อทำการทดสอบได้อย่างมีประสิทธิภาพมากขึ้น ตัวอย่างเช่น การใช้คำสั่งเช่น node –test **/*.test.jsนักพัฒนาสามารถทำการทดสอบไฟล์ทั้งหมดที่มีนามสกุล.test.jsในหลาย ๆ ไดเร็กทอรีได้อย่างสะดวก ความสามารถนี้ช่วยปรับปรุงกระบวนการทดสอบ โดยมอบความสามารถในการปรับตัวที่ดีขึ้นและความสะดวกในการใช้งานสำหรับนักพัฒนาที่ทำงานในโครงการที่มีโครงสร้างไฟล์ที่หลากหลายและการกำหนดค่าการทดสอบ

6. เพิ่มตัวเลือก Flush ให้กับฟังก์ชัน Fs.writefile()

ใน Node.js 21 การปรับปรุงที่โดดเด่นคือการเพิ่มตัวเลือก 'flush' ให้กับฟังก์ชัน fs.writeFile การปรับปรุงนี้เน้นถึงสถานการณ์ที่ข้อมูลที่เขียนลงในไฟล์อาจไม่ถูกล้างไปยังที่จัดเก็บข้อมูลถาวรทันที ซึ่งอาจนำไปสู่การอ่านข้อมูลเก่าในภายหลัง

ตัวเลือก 'ฟลัช' ใหม่ ซึ่งนำมาใช้ใน Pull Request (PR) นี้ ช่วยให้นักพัฒนาสามารถควบคุมพฤติกรรมการฟลัชได้ดียิ่งขึ้น เมื่อเปิดใช้งาน ตัวเลือกนี้ช่วยให้แน่ใจว่าข้อมูลถูกบังคับไปยังที่จัดเก็บข้อมูลถาวรเมื่อสิ้นสุดการดำเนินการเขียนที่สำเร็จ คุณสมบัตินี้มีประโยชน์อย่างยิ่งในสถานการณ์ที่ความสอดคล้องของข้อมูลในทันทีเป็นสิ่งสำคัญ ป้องกันการเกิดข้อมูลเก่า และช่วยให้นักพัฒนามีกลไกการเขียนไฟล์ที่เชื่อถือได้และคาดการณ์ได้มากขึ้นในแอปพลิเคชัน Node.js

7. การลบ Hook การปรับแต่งโมดูล 'globalPreload'

ใน Node.js 21 นักพัฒนาสามารถลบ hook การปรับแต่งโมดูล 'globalPreload' ได้ นักพัฒนาได้รับการสนับสนุนให้ใช้วิธี 'ลงทะเบียน' ในการส่งข้อมูลจากเธรดแอปพลิเคชันไปยัง hooks การปรับแต่ง และใช้ฮุก 'เริ่มต้น' เพื่อสร้างช่องทางการสื่อสารระหว่างเธรด การปรับเปลี่ยนนี้ให้แนวทางที่มีโครงสร้างและชัดเจนมากขึ้นในการปรับแต่งโมดูล ทำให้เกิดการแบ่งแยกความรับผิดชอบที่ชัดเจนยิ่งขึ้น

วิธีการ 'ลงทะเบียน' อำนวยความสะดวกในการส่งข้อมูลไปยัง hooks การปรับแต่ง ในขณะที่ hook 'เริ่มต้น' มีบทบาทในการตั้งค่าช่องทางการสื่อสารระหว่างเธรด กลไกที่ได้รับการปรับปรุงนี้ช่วยเพิ่มความเป็นโมดูลโดยรวมและความสามารถในการบำรุงรักษาแอปพลิเคชัน Node.js ซึ่งสอดคล้องกับแนวปฏิบัติที่ดีที่สุด และส่งเสริมโครงสร้างโค้ดที่ใช้งานง่ายและเป็นระเบียบมากขึ้นสำหรับนักพัฒนาที่ทำงานกับการปรับแต่งโมดูล

8. Lil HTTP 9.1.2 การบังคับใช้โหมดเข้มงวด

การอัปเดตอื่นใน Node.js 21 คือ llhttp 9.1.2 ซึ่งนำเสนอการบังคับใช้โหมดที่เข้มงวดตามค่าเริ่มต้น ทำให้มั่นใจได้ถึงความน่าเชื่อถือและความปลอดภัยของโค้ดที่ได้รับการปรับปรุง การเปลี่ยนแปลงนี้รวมถึงการบังคับ\r\nหลังส่วนหัวและส่วนต่างๆ เพื่อการประมวลผลข้อมูลที่สอดคล้องกัน นอกจากนี้ ไม่อนุญาตให้ส่งข้อมูลหลังจากข้อความที่มีการเชื่อมต่อ: ปิดส่วนหัวอีกต่อไป ซึ่งสนับสนุนการปฏิบัติตามโปรโตคอลและการจัดการการเชื่อมต่อ เพื่อรองรับกรณีการใช้งานเฉพาะ จึงมีการใช้แฟล็ก–insecure-http-parserเพื่อให้ผู้ใช้มีความยืดหยุ่นในการปิดใช้งานการเปลี่ยนแปลงเหล่านี้ การอัปเดตเหล่านี้มีเป้าหมายเพื่อยกระดับความเสถียรของระบบและความสม่ำเสมอในการประมวลผลข้อมูลในแอปพลิเคชัน Node.js โดยกระตุ้นให้นักพัฒนาตรวจสอบและปรับฐานโค้ดเพื่อการบูรณาการที่ราบรื่น

9. การรวมวัตถุ 'เนวิเกเตอร์'

ด้วยการบูรณาการออบเจ็กต์ 'navigator' ขณะนี้นักพัฒนาสามารถเข้าถึงข้อมูลการทำงานพร้อมกันของฮาร์ดแวร์ได้อย่างราบรื่นผ่าน navigator.hardwareConcurrency ที่เพิ่งเปิดตัวใหม่ การปรับปรุงนี้จะทำให้ Node.js สอดคล้องกับสภาพแวดล้อมของเบราว์เซอร์มากขึ้น ซึ่งเป็นวิธีมาตรฐานสำหรับนักพัฒนาในการดึงรายละเอียดการทำงานพร้อมกันของฮาร์ดแวร์

นอกจากนี้ ด้วยการเพิ่มนี้ Node.js มีความหลากหลายมากขึ้น ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่ใช้ประโยชน์จากทรัพยากรฮาร์ดแวร์ได้อย่างมีประสิทธิภาพมากขึ้น ไม่ว่าจะเพื่อเพิ่มประสิทธิภาพการทำงานหรือใช้กลยุทธ์การประมวลผลแบบขนานก็ตาม

ดูแลการพัฒนา Node.js ของคุณด้วยเวอร์ชัน 21

Node.js 21 นำเสนอการปรับปรุง การปรับปรุง และฟีเจอร์ใหม่ๆ ที่น่าตื่นเต้นมากมาย ซึ่งสัญญาว่าจะยกระดับประสบการณ์การพัฒนาของคุณ ตั้งแต่การเปิดตัวไคลเอนต์ WebSocket ในตัวไปจนถึงการรองรับ globs ใน test runner Node.js 21 มอบเครื่องมืออันทรงพลังให้กับนักพัฒนาสำหรับการสร้างแอปพลิเคชันที่ทันสมัยและมีประสิทธิภาพ ขณะที่คุณสำรวจความก้าวหน้าเหล่านี้ อย่าลืมทดสอบความเข้ากันได้ของแอปพลิเคชันของคุณ และพิจารณาอัปเกรด โดยเฉพาะสถานะสิ้นสุดอายุการใช้งานสำหรับ Node.js 16, 17 หรือ 19 โปรดคำนึงถึงความซับซ้อนของกระบวนการอัปเกรดและการย้ายข้อมูล ที่นี่ พันธมิตรด้านการพัฒนา Node.js ที่เชี่ยวชาญสามารถเปลี่ยนแปลงได้

พร้อมที่จะยกระดับการพัฒนาแอปพลิเคชัน Node.js ของคุณแล้วหรือยัง? พูดคุยกับ Dev Maestros ของเรา!

ผู้เชี่ยวชาญ Node.js ของเราเชี่ยวชาญในการสร้างโซลูชันเว็บประสิทธิภาพสูง แอปพลิเคชันหน้าเดียว และแอปพลิเคชันเว็บแบบก้าวหน้า หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถในการพัฒนา Node.js ของเรา โปรดส่งข้อความถึงเราที่ [email protected] แล้วเราจะดำเนินการต่อจากที่นั่น

อ้างอิง:

[i] เทคโนโลยีบาแคนซี