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

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

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

  • ความสามารถในการสร้างได้ทันทีหรือเมื่อมีเหตุการณ์บางอย่างเกิดขึ้นได้รับความเสถียร รายงานการวินิจฉัยซึ่งสะท้อนถึงเหตุการณ์ที่ช่วยวินิจฉัยปัญหาต่างๆ เช่น ข้อขัดข้อง ประสิทธิภาพลดลง หน่วยความจำรั่ว โหลด CPU สูง เอาต์พุตข้อผิดพลาดที่ไม่คาดคิด ฯลฯ
  • เพิ่มการสนับสนุน API ทดลอง ที่เก็บข้อมูลภายในแบบ Async ด้วยการใช้งานคลาส AsyncLocalStorage ที่สามารถใช้เพื่อสร้างสถานะอะซิงโครนัสพร้อมตัวจัดการตามการโทรกลับและสัญญา AsyncLocalStorage ช่วยให้คุณสามารถจัดเก็บข้อมูลในขณะที่กำลังประมวลผลคำขอของเว็บได้ เช่นเดียวกับ Thread-Local Storage ในภาษาอื่นๆ
  • ลบคำเตือนคุณลักษณะทดลองเมื่อบูตเครื่อง โมดูล ECMAScript6 เชื่อมต่อและส่งออกโดยใช้คำสั่งนำเข้าและส่งออก ในเวลาเดียวกัน การใช้งานโมดูล ESM ยังคงเป็นการทดลอง
  • เครื่องยนต์ V8 อัปเดตเป็นเวอร์ชัน 8.1 (1, 2, 3) ซึ่งแนะนำการปรับปรุงประสิทธิภาพใหม่และเพิ่มคุณสมบัติใหม่ เช่น ตัวดำเนินการรวมเชิงตรรกะใหม่ "???" (ส่งคืนตัวถูกดำเนินการทางขวาหากตัวถูกดำเนินการทางซ้ายเป็น NULL หรือไม่ได้กำหนด และในทางกลับกัน) เครื่องหมาย "?" สำหรับการตรวจสอบครั้งเดียวของสายคุณสมบัติหรือการเรียกทั้งหมด (เช่น "db?.user?.name?.length" โดยไม่มีการตรวจสอบเบื้องต้น) วิธี Intl.DisplayName สำหรับการรับชื่อที่แปลเป็นภาษาท้องถิ่น เป็นต้น
  • Streams API ได้รับการปรับปรุงใหม่เพื่อปรับปรุงความสอดคล้องของ Streams API และจัดการกับความแตกต่างในลักษณะการทำงานของส่วนหลักของ Node.js ตัวอย่างเช่น ลักษณะการทำงานของ http.OutgoingMessage จะคล้ายกับ stream.Writable และ net.Socket จะคล้ายกับ stream.Duplex ตัวเลือก autoDestroy ถูกตั้งค่าเป็น "จริง" ตามค่าเริ่มต้น ซึ่งหมายความว่า "_destroy" จะถูกเรียกเมื่อเสร็จสิ้น
  • เพิ่มการสนับสนุน API ทดลอง วาสิ (อินเทอร์เฟซระบบ WebAssembly) ที่มีอินเทอร์เฟซการเขียนโปรแกรมสำหรับการโต้ตอบโดยตรงกับระบบปฏิบัติการ (POSIX API สำหรับการทำงานกับไฟล์ ซ็อกเก็ต ฯลฯ)
  • ข้อกำหนดที่เพิ่มขึ้นสำหรับ เวอร์ชันขั้นต่ำ คอมไพเลอร์และแพลตฟอร์ม: macOS 10.13 (High Sierra), GCC 6, Windows ใหม่กว่า 7/2008R2.

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

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

ที่มา: opennet.ru

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