10 ปีที่รอคอย! Express.js V5.0 มาแล้ว! เมื่อวันที่ 15 ตุลาคม 2024 ที่ผ่านมา Express.js ได้ทำการออกเวอร์ชัน 5.0 อย่างเป็นทางการ มาพร้อมกับการอัปเดต และการเพิ่มประสิทธิภาพต่างๆ ที่ดีขึ้น แม้ว่าตัว API จะไม่ได้แตกต่างจาก V4 มากนัก แต่ก็มีหลายอย่างที่เปลี่ยนอยู่เหมือนกัน ถ้าใครอยากใช้หรือ upgrade เรามาดูกันว่ามีอะไรน่าสนใจบ้างครับ
- ต้องใช้ Node.js เวอร์ชัน 18 ขึ้นไป
- ไม่รองรับคำสั่ง app.del() แล้ว ให้ใช้ app.delete() แทน
- คำสั่ง res.json(obj, status) ก็เช่นเดียวกัน เลิกใช้แล้ว ให้ทุกคนเขียนแบบ chain แทน เช่น res.status(200).json({hello: ‘express’}) (บางคนเขียนอยู่แล้วใน V4 สบายไป)
- ใน V5 ถ้าเราใช้ Promise ที่ route และ middleware ไม่ต้องต้องใส่ try catch เพื่อ next(err) แล้วก็ได้ เพราะจะทำอัตโนมัติให้ ดูตัวอย่างโค้ด
เก่า V4 เขียนแบบนี้
app.get(‘/route’, async (req, res, next) => {
try {
const user = await getUserById(req.params.id)
res.send(user);
} catch (err) {
next(err); // ต้องเขียนบรรทัดนี้
}
});
ใหม่ V5 เขียนแค่นี้พอ
app.get(‘/user/:id’, async (req, res, next) => {
const user = await getUserById(req.params.id) // ระบบจะตรวจจับข้อผิดพลาดให้เราอัตโนมัติ
res.send(user)
}) - คำสั่ง res.status(code) จะใส่ตัวเลขได้ตั้งแต่ 100 ถึง 999 ตาม Node.js API จริงๆ แล้ว คือจะแจ้ง error ถ้า status code ไม่ใช่ตัวเลข เมื่อก่อนตัว V4 อยากใส่อะไรก็ได้ไม่แจ้ง error ใดๆ ฮ่าๆ
- คำสั่ง req.body return เป็น undefined แล้ว เมื่อก่อนใน V4 จะ return {} (object เปล่า) เป็นค่า default ครับ
- ลบคำสั่ง bodyParser() ออกจาก V5 แล้ว (จริงๆ deprecated ตั้งแต่ V4)
- หลายคำสั่งจะเปลี่ยนเป็น พหูพจน์ (plural) แล้ว เช่น
- req.acceptsCharset เปลี่ยนเป็น req.acceptsCharsets
- req.acceptsEncoding เปลี่ยนเป็น req.acceptsEncodings
- req.acceptsLanguage เปลี่ยนเป็น req.acceptsLanguages
- และบางคำสั่งก็เปลี่ยนเป็นตัวพิมพ์ใหญ่ด้วย เช่น res.sendfile แก้เป็น res.sendFile เป็นต้น
- แน่นอนถ้าใครอยากคิดอัปเกรดเป็น V5 นอกจากการเปลี่ยนแปลงต่างๆ แล้ว ยังต้องดูไลบรารีที่เราใช้ในโปรเจคด้วยว่ารองรับ V5 หรือยัง แต่ถ้าใครอยากลองเล่น หรืออัปเกรดเลยก็ลองใช้คำสั่ง
npm install "express@>=5.0.1"
--save
จริงๆ ยังมีอีกเยอะถ้าใครสนใจอ่านต่อดูได้ที่นี่นะครับ https://expressjs.com/2024/10/15/v5-release.html
โค้ชเอก
-ไม่อนุญาตให้คัดลอกเนื้อหาไปลงยัง Platform อื่นๆ โดยไม่ได้รับอนุญาต