JavaScript ฝั่งเซิร์ฟเวอร์ Node.js 16.0 เปิดตัว

Node.js 16.0 เปิดตัวแล้ว ซึ่งเป็นแพลตฟอร์มสำหรับเรียกใช้แอปพลิเคชันเครือข่ายใน JavaScript Node.js 16.0 จัดอยู่ในประเภทการสนับสนุนระยะยาว แต่สถานะนี้จะได้รับมอบหมายในเดือนตุลาคมเท่านั้นหลังจากความเสถียรแล้ว Node.js 16.0 จะได้รับการสนับสนุนจนถึงเดือนเมษายน 2023 การบำรุงรักษาสาขา LTS ก่อนหน้าของ Node.js 14.0 จะคงอยู่จนถึงเดือนเมษายน 2023 และปีก่อนสาขา LTS 12.0 สุดท้ายจนถึงเดือนเมษายน 2022 การสนับสนุนสาขา 10.0 LTS จะถูกยกเลิกใน 10 วัน

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

  • เอ็นจิ้น V8 ได้รับการอัพเดตเป็นเวอร์ชัน 9.0 (Node.js 15 ใช้รีลีส 8.6) ซึ่งอนุญาตให้ใช้งานฟีเจอร์ต่างๆ เช่น คุณสมบัติ "ดัชนี" สำหรับนิพจน์ทั่วไป (รวมถึงอาร์เรย์ที่มีตำแหน่งเริ่มต้นและสิ้นสุดของกลุ่มการแข่งขัน) วิธี Atomics ใน Node.js 16 .waitAsync (เวอร์ชัน async ของ Atomics.wait) รองรับการใช้คีย์เวิร์ด await ในโมดูลระดับบนสุด การเรียกใช้ฟังก์ชันจะถูกเร่งในสถานการณ์ที่จำนวนอาร์กิวเมนต์ที่ส่งไม่สอดคล้องกับพารามิเตอร์ที่กำหนดไว้ในฟังก์ชัน
  • Timers Promises API มีความเสถียร โดยมีชุดฟังก์ชันทางเลือกสำหรับการทำงานกับตัวจับเวลาที่ส่งคืนออบเจ็กต์ Promise เป็นเอาต์พุต ซึ่งช่วยให้ไม่จำเป็นต้องใช้ util.promisify() นำเข้า { setTimeout } จาก 'ตัวจับเวลา / สัญญา'; ฟังก์ชั่น async run () { รอ setTimeout (5000); console.log('สวัสดีชาวโลก!'); } วิ่ง();
  • มีการเพิ่มการใช้งานแบบทดลองของ Web Crypto API ซึ่งออกแบบมาเพื่อดำเนินการเข้ารหัสขั้นพื้นฐานที่ด้านข้างของเว็บแอปพลิเคชัน เช่น การจัดการแฮชที่เข้ารหัส การสร้างและตรวจสอบลายเซ็นดิจิทัล การเข้ารหัสและถอดรหัสข้อมูลโดยใช้วิธีการเข้ารหัสที่หลากหลาย และสร้างความปลอดภัยด้วยการเข้ารหัส ตัวเลขสุ่ม API ยังมีฟังก์ชันสำหรับสร้างและจัดการคีย์อีกด้วย
  • N-API (API สำหรับการพัฒนาส่วนเสริม) ได้รับการอัปเดตเป็นเวอร์ชัน 8
  • มีการเปลี่ยนไปใช้ตัวจัดการแพ็คเกจ NPM 7.10 รุ่นใหม่แล้ว
  • ทำให้การใช้งานคลาส AbortController มีความเสถียร ซึ่งใช้ AbortController Web API และอนุญาตให้ยกเลิกสัญญาณใน API ที่อิงตามสัญญาที่เลือก
  • การสนับสนุนเวอร์ชันที่สามของรูปแบบแผนที่แหล่งที่มา ซึ่งใช้ในการเปรียบเทียบโมดูลที่สร้างขึ้น ประมวลผล หรือแพ็กเกจกับซอร์สโค้ดต้นฉบับ ได้รับความเสถียรแล้ว
  • เพื่อให้เข้ากันได้กับ Web API รุ่นเก่า จึงได้มีการเพิ่มเมธอด buffer.atob(data) และ buffer.btoa(data)
  • การสร้างชุดประกอบสำหรับอุปกรณ์ Apple ใหม่ที่ติดตั้งชิป M1 ARM ได้เริ่มขึ้นแล้ว
  • บนแพลตฟอร์ม Linux ข้อกำหนดเวอร์ชันคอมไพเลอร์ได้รับการยกระดับเป็น GCC 8.3

ให้เราระลึกว่าแพลตฟอร์ม 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..", ฟังก์ชัน (ผลลัพธ์) {การประมวลผลผลลัพธ์});" ซึ่งการควบคุมจะส่งผ่านไปยังโค้ดเพิ่มเติมทันที และผลลัพธ์ของคิวรีจะถูกประมวลผลเมื่อข้อมูลมาถึง

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

ที่มา: opennet.ru

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