19 คะแนน โดย xguru 2024-06-03 | 7 ความคิดเห็น | แชร์ทาง WhatsApp

ตัวรันทดสอบของ Node.js

  • ตอนนี้ Node.js มีฟีเจอร์ตัวรันทดสอบมาให้ในตัวแล้ว
  • สามารถเขียนเทสต์ได้โดยอิมพอร์ตโมดูล node:test ในไฟล์ทดสอบ
  • รันเทสต์เดี่ยว: node --test tests/math.test.js
  • ตรวจหาและรันไฟล์ทดสอบโดยอัตโนมัติ
  • สามารถใช้โมดูล assert ที่มีมาในตัวเพื่อตรวจสอบผลการทดสอบได้
  • สามารถใช้ test suite และ hook เพื่อจัดกลุ่มและจัดการเทสต์ที่เกี่ยวข้องกันได้

Native mocking ของ Node.js

  • ตอนนี้ Node.js มีฟีเจอร์ native mocking มาให้ในตัวแล้ว
  • สามารถใช้ความสามารถด้าน mocking ที่เคยมีในเฟรมเวิร์กทดสอบอื่นได้โดยตรงใน Node.js
  • สามารถใช้งานฟีเจอร์ mocking ได้ด้วยเมธอด mock ในโมดูล node:test

Native test coverage ของ Node.js

  • test coverage ช่วยให้เข้าใจขอบเขตของการทดสอบในซอร์สโค้ด
  • ตั้งแต่ Node.js 20 มีฟีเจอร์ native test coverage ให้ใช้งาน
  • สามารถสร้างข้อมูล test coverage ได้ด้วยแฟล็ก --experimental-coverage
  • สามารถระบุส่วนของโค้ดที่ยังไม่ได้ถูกทดสอบได้ผ่านรายงาน coverage

Watch mode ของ Node.js

  • watch mode ตรวจจับการเปลี่ยนแปลงของไฟล์แบบเรียลไทม์และรันสคริปต์ใหม่โดยอัตโนมัติ
  • ไม่จำเป็นต้องพึ่งพา dependency ภายนอกอย่าง Nodemon
  • สามารถตรวจจับการเปลี่ยนแปลงของไฟล์และรันสคริปต์อัตโนมัติได้ด้วยแฟล็ก --watch

Corepack ของ Node.js

  • Corepack ทำหน้าที่เป็นตัวเชื่อมระหว่างโปรเจกต์กับตัวจัดการแพ็กเกจ
  • สามารถระบุตัวจัดการแพ็กเกจที่จะใช้ในโปรเจกต์ได้ และ Corepack จะจัดการให้อัตโนมัติ
  • สามารถเปิดใช้งาน Corepack ได้ด้วยคำสั่ง corepack enable

ตัวโหลด .env ของ Node.js

  • ตั้งแต่ Node.js 20 มีฟีเจอร์โหลดตัวแปรสภาพแวดล้อมจากไฟล์ .env แบบ native
  • สามารถโหลดไฟล์ .env ได้ด้วยแฟล็ก --env-file
  • สามารถโหลดไฟล์ .env หลายไฟล์เพื่อกำหนดค่าสภาพแวดล้อมที่หลากหลายได้

การรองรับ import.meta ของ Node.js

  • Node.js v20.11.0 และ v21.2.0 รองรับ import.meta.filename และ import.meta.dirname
  • ทำให้ดึงพาธไฟล์และชื่อไดเรกทอรีได้ง่ายขึ้น

Native timer promises ของ Node.js

  • ตั้งแต่ Node.js v15 สามารถใช้ timer ในรูปแบบ promise ได้
  • สามารถใช้ setTimeout และ setInterval แบบ promise เพื่อเขียนโค้ดอะซิงก์ให้กระชับขึ้นได้

Permission module ของ Node.js

  • เป็นฟีเจอร์ทดลองสำหรับควบคุมการเข้าถึงทรัพยากรของแอปพลิเคชัน Node.js
  • สามารถจำกัดการเข้าถึงระบบไฟล์ เครือข่าย ตัวแปรสภาพแวดล้อม และอื่น ๆ ได้ด้วยแฟล็ก --experimental-permission

Policy module ของ Node.js

  • เป็นฟีเจอร์ด้านความปลอดภัยที่ช่วยป้องกันการโหลดโค้ดอันตราย
  • สามารถระบุไฟล์นโยบายและควบคุมการโหลดโมดูลได้ด้วยแฟล็ก --experimental-policy

7 ความคิดเห็น

 
cometkim 2024-06-05

ไม่มีการพูดถึง node --run เลยนะครับ ตั้งแต่เวอร์ชันใหม่เป็นต้นไปสามารถรันสคริปต์ได้โดยไม่ต้องพึ่งพา NPM แล้ว ความเร็วตอนเริ่มทำงานเร็วขึ้นหลายสิบเท่า

 
tsboard 2024-06-03

ครั้งนี้ตอนลองทำโปรเจ็กต์ tsboard ผมได้ลองเทียบกับรันไทม์ Bun หลายอย่างอยู่เหมือนกัน แล้วก็รู้สึกว่า Node.js ดีแทบทุกอย่าง แต่ก็ยังเสียดายอยู่สองข้อคือ (1) ไม่รองรับ TypeScript (2) ความเร็ว สองอย่างนี้ยังน่าเสียดายอยู่ครับ อย่างเรื่องความเข้ากันได้หรือการที่แทบไม่เลือกฮาร์ดแวร์เลย ผมว่ามันยอดเยี่ยมมากจริง ๆ

ถ้าคุณกำลังพิจารณาเรื่อง TypeScript กับความเร็วในการทำงาน ลองพิจารณา Bun runtime ดูสักครั้งก็ได้ครับ...!

 
[ความคิดเห็นนี้ถูกซ่อน]
 
edunga1 2024-06-03

ว้าว~ ในต้นฉบับก็มีการพูดถึง Jest เหมือนกันนะ

 
edunga1 2024-06-05

ลองย้ายโปรเจ็กต์เล็ก ๆ จาก jest -> node.js ดูแล้ว แต่รองรับฟังก์ชันสำหรับการตรวจสอบน้อยเกินไป เลยไม่ค่อยดีเท่าไหร่ :(

 
kandk 2024-06-03

ตามเทรนด์ล่าสุดกันเร็วมากจริง ๆ..

 
dylanju 2024-06-03

และการทำ mocking แบบเนทีฟ!