มีอะไรใหม่ใน Express.js v5.0

10 ปีที่รอคอย! Express.js V5.0 มาแล้ว!  เมื่อวันที่ 15 ตุลาคม 2024 ที่ผ่านมา Express.js ได้ทำการออกเวอร์ชัน 5.0 อย่างเป็นทางการ มาพร้อมกับการอัปเดต และการเพิ่มประสิทธิภาพต่างๆ ที่ดีขึ้น แม้ว่าตัว API จะไม่ได้แตกต่างจาก V4 มากนัก แต่ก็มีหลายอย่างที่เปลี่ยนอยู่เหมือนกัน ถ้าใครอยากใช้หรือ upgrade เรามาดูกันว่ามีอะไรน่าสนใจบ้างครับ

  1. ต้องใช้ Node.js เวอร์ชัน 18 ขึ้นไป
  2. ไม่รองรับคำสั่ง app.del() แล้ว ให้ใช้ app.delete() แทน
  3. คำสั่ง res.json(obj, status) ก็เช่นเดียวกัน เลิกใช้แล้ว ให้ทุกคนเขียนแบบ chain แทน เช่น res.status(200).json({hello: ‘express’}) (บางคนเขียนอยู่แล้วใน V4 สบายไป)
  4. ใน 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)
    })
  5. คำสั่ง res.status(code) จะใส่ตัวเลขได้ตั้งแต่ 100 ถึง 999 ตาม Node.js API จริงๆ แล้ว คือจะแจ้ง error ถ้า status code ไม่ใช่ตัวเลข เมื่อก่อนตัว V4 อยากใส่อะไรก็ได้ไม่แจ้ง error ใดๆ ฮ่าๆ
  6. คำสั่ง req.body return เป็น undefined แล้ว เมื่อก่อนใน V4 จะ return {} (object เปล่า) เป็นค่า default ครับ
  7. ลบคำสั่ง bodyParser() ออกจาก V5 แล้ว (จริงๆ deprecated  ตั้งแต่ V4)
  8. หลายคำสั่งจะเปลี่ยนเป็น พหูพจน์ (plural) แล้ว เช่น
    • req.acceptsCharset เปลี่ยนเป็น req.acceptsCharsets
    • req.acceptsEncoding เปลี่ยนเป็น req.acceptsEncodings
    • req.acceptsLanguage เปลี่ยนเป็น req.acceptsLanguages
  9. และบางคำสั่งก็เปลี่ยนเป็นตัวพิมพ์ใหญ่ด้วย เช่น res.sendfile แก้เป็น res.sendFile เป็นต้น
  10. แน่นอนถ้าใครอยากคิดอัปเกรดเป็น V5 นอกจากการเปลี่ยนแปลงต่างๆ แล้ว ยังต้องดูไลบรารีที่เราใช้ในโปรเจคด้วยว่ารองรับ V5 หรือยัง แต่ถ้าใครอยากลองเล่น หรืออัปเกรดเลยก็ลองใช้คำสั่ง

    npm install "express@>=5.0.1" --save

จริงๆ ยังมีอีกเยอะถ้าใครสนใจอ่านต่อดูได้ที่นี่นะครับ https://expressjs.com/2024/10/15/v5-release.html


โค้ชเอก

-ไม่อนุญาตให้คัดลอกเนื้อหาไปลงยัง Platform อื่นๆ โดยไม่ได้รับอนุญาต

แนะนำขั้นตอนการเรียนรู้ JavaScript Framework สมัยใหม่

ถ้าอยากศึกษา JavaScript framework สมัยใหม่ แน่นอนเราต้องเรียนรู้ JavaScript สมัยใหม่ด้วยครับ ปัจจุบัน JavaScript ได้เพิ่มคุณสมบัติต่างๆ เข้ามามากมายเลย

ถ้าให้ผมแนะนำ ขอแนะนำ ดังนี้

1. ศึกษา JavaScript พื้นฐานก่อนครับ ไม่ว่าเป็นเรื่องง่ายๆอย่าง ตัวแปร (variable) , Arrays, Objects, Functions และอื่นๆ ผมทำสอนไว้บ้างตามนี้ http://goo.gl/vXT9bC

2. จากนั้นต่อด้วย JavaScript ES6 ครับ ดูหัวข้อคร่าวๆได้ในภาพ (ตรงนี้อนาคตก็คงมี ES7 ,ES8 แต่ก็ไม่ต้องห่วงครับ ถ้าเรามีพื้นฐาน ES6 อยู่แล้ว ก็ให้ศึกษาคุณสมบัติที่มันเพิ่มเติมเข้ามา)

ยกตัวอย่าง ถ้าเราต้องการศึกษา Angular 2 ซึ่งเขียนด้วย TypeScript (จริงๆเขียนด้วย ES6 ก็ได้) เราก็ศึกษาเพิ่มเติมอีกนิดหน่อย เพราะเราสามารถนำความรู้จาก JavaScript ES6 มาใช้ได้เลย (TypeScript เองเป็น superset ของ JS อยู่แล้ว

ส่วน JavaScript Framework อื่นๆ ที่ไม่ได้ใช้ TypeScript แน่นอนก็สามารถนำความรู้ JavaScript ES6 มาใช้ได้เลย 🙂

อย่าลืมครับ “การข้ามความรู้พื้นฐาน มักสร้างความยุ่งยากตามมาเสมอ และจะยุ่งยากมากขึ้นไปอีก ถ้าข้ามความรู้พื้นฐาน JavaScript 55+ ” มาลุยกัน!

แนะนำ Leaflet.js ไว้จัดการและทำแผนที่

แนะนำ Leaflet.js เป็น JavaScript library เกี่ยวกับการจัดการแผนที่อีกตัวที่น่าใช้มากๆครับ น้ำหนักเบาเพียง 33KB ฟีเจอร์เพียบ โค้ดสั้นกระชับ เหมาะกับมือถืออีกด้วย ลองใช้กันได้ครับ

รายละเอียด
http://leafletjs.com/

อันนี้ e-Book ฟรี (สมัครสมาชิก แล้วโหลด)
http://goo.gl/bU5Epg

วิดีโอสอนฟรี

https://sirensoft.github.io/#free

แนะนำ Sails.js MVC Framework สำหรับ Node.js

แนะนำ Sails.js MVC Framework สำหรับ Node.js ที่ครบเครื่อง ใช้งานง่าย และมี features ครบถ้วน ครับ

 

จุดเด่น
1. เหมาะสำหรับทำ RESTful APIs มาก เพราะมีตัว genereate โค้ดอัตโนมัติภายในบรรทัดเดียว!
2. เหมาะสำหรับงานแบบ Realtime โค้ดที่ใช้เขียนง่าย และสั้นมาก! (เขียนครอบ socket.io อีกที)
3. มี ORM ให้ใช้ สามารถติดต่อฐานข้อมูลได้หลายตัว เช่น MySQL, PostgreSQL, MongoDB, SQLite3, Redis เป็นต้น (ใช้ Waterline ORM)

————————
เว็บไซต์
http://sailsjs.org/

https://goo.gl/2Krndf

สอนใช้งานบน Youtube
https://goo.gl/OwtRIR

โค้ดตัวอย่าง
https://github.com/sails101

ใครที่เคยเขียนแนว MVC อยู่แล้วคงจะชอบมาก ลองใช้ดูได้ครับ