มีอะไรใหม่ใน 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 อื่นๆ โดยไม่ได้รับอนุญาต

เขียน Web Application ด้วย Node.js และ Express ใส่ใจกับความปลอดภัยกันด้วยนะครับ

CodingThailand
เผยแพร่โดย Akenarin Komkoon23 กุมภาพันธ์

มาที่สาย Node.js กันบ้าง สำหรับคนที่เขียน Web Application ด้วย Node.js และ Express อย่าลืมเขียนป้องกันและใส่ใจกับความปลอดภัยกันด้วยนะครับ

วันนี้แนะนำ middleware 2 ตัวนี้ก่อนแล้วกัน ใช้งานง่ายดี ตัวแรกชื่อว่า “lusca”

รายละเอียด: https://goo.gl/TAWdNP

.
ส่วนอีกตัว ชื่อว่า “Helmet” ครับ ก็แนะนำเช่นเดียวกัน ลองดูวิธีการเขียนได้ที่นี่

รายละเอียด: https://goo.gl/aMD2jk

 

แนะนำ date-fns เป็น Library ใหม่ไว้ช่วยเราจัดการเกี่ยวกับวันที่และเวลา

สำหรับคนที่เขียน Node.js/JavaScript นะครับ วันนี้มาแนะนำ date-fns เป็น Library ใหม่ไว้ช่วยเราจัดการเกี่ยวกับวันที่และเวลา มีฟังก์ชันสำเร็จรูปให้เรียกใช้งานกว่า 140+ ฟังก์ชัน สะดวกมากๆ

รายละเอียด: https://date-fns.org/


โค้ชเอก

แนะนำ library เกี่ยวกับความปลอดภัย Node.js

สำหรับคนที่เขียน Node.js หรือเขียน JavaScript วันนี้มาแนะนำ library เกี่ยวกับความปลอดภัย 2 ตัวครับ ได้แก่

1. retire.js เป็น Library ใช้สำหรับแสกนหาช่องโหว่ที่เป็นอันตรายต่อระบบของเราโดยจะเช็คว่า library ต่างๆที่เราใช้ในโปรเจคมีช่องโหว่อะไรหรือไม่ (เช็คจาก package.json ที่เราใช้)

รายละเอียด: https://goo.gl/Za9JmZ

.
2. ส่วนอีกตัวจะเป็น Node Security Platform ครับ คล้ายกันกับ retire.js ไว้คอยเช็คช่องโหว่และความปลอดภัยเหมือนกัน การใช้งานง่ายมากครับ แค่สั่งติดตั้ง npm install -g nsp และถ้าจะสแกนโปรเจคก็สั่ง nsp check แค่นี้

รายละเอียด: https://goo.gl/1dHH4e

ก่อนขึ้น production อย่าลืมตรวจสอบกันด้วยนะครับ 🙂


โค้ชเอก

แนะนำ 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 อยู่แล้วคงจะชอบมาก ลองใช้ดูได้ครับ

สรุป 14 คำสั่ง NPM ที่ใช้บ่อย สำหรับสาย Node.js

npm

 

npm init
เริ่มต้นใช้งาน และช่วยให้เราสร้าง และใส่รายละเอียดเกี่ยวกับโปรเจคของเรา (package.json)

npm install module_name
ติดตั้ง module

npm install -g module_name
ติดตั้ง module ในระดับ global

npm install module_name –save
ติดตั้ง module และเพิ่มมันเข้าไปในไฟล์ package.json (ข้างใน dependencies)

npm install module_name –save-dev
เหมือนกันกับข้างบน ติดตั้ง module และเพิ่มมันเข้าไปในไฟล์ package.json (ข้างใน dependencies) และบอกว่าจะนำมาช่วยในส่วนของนักพัฒนา

npm list
แสดงรายการ modules ทั้งหมดที่ติดตั้งไปแล้วในโปรเจคของเรา

npm list -g
แสดงรายการ modules ระดับ global ทั้งหมดที่ถูกติดตั้งบน OS ของเรา

npm remove module_name
uninstall module ออกจากโปรเจคของเรา

npm remove -g module_name
uninstall module ระดับ global

npm remove module_name –save
uninstall module ออกจากโปรเจคของเรา พร้อมทั้งนำออกจาก attribute dependencies ด้วย (ในไฟล์ package.json)

npm remove module_name –save-dev
เหมือนกันกับด้านบน uninstall module ออกจากโปรเจคของเรา พร้อมทั้งนำออกจาก attribute dependencies ด้วย (ในไฟล์ package.json)

npm update module_name
update เวอร์ชัน module ให้ใหม่ล่าสุด

npm update -g module_name
update เวอร์ชัน module ให้ใหม่ล่าสุด ในระดับ global

npm -v
แสดงเวอร์ชันปัจจุบันของ npm

ป.ล. module_name คือ ชื่อ module/library ที่เราต้องการติดตั้งครับ