แนะนำ Node.js Libraries
Sirichai Teerapattarasakul / January 23, 2023
2 min read
แนะนำ NodeJS Libraries ที่ใช้บ่อยหรือน่าสนใจ เพื่อที่ช่วยเพิ่มประสิทธิภาพงาน Project และการพัฒนาให้เร็วยิ่งขึ้น ตามรายการดังนี้
Database
- MongoDB NodeJS Driver Official MongoDB driver
- Prisma Object Relational Mapping (ORM) เครื่องมือสำหรับจัดการฐานข้อมูลรองรับ NoSQL เช่น PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB และ CockroachDB
- Sequelize Object Relational Mapping (ORM) เครื่องมือสำหรับจัดการฐานข้อมูล Relational database เช่น Postgres, MySQL, MariaDB, SQLite และ Microsoft SQL Server
File & Image
- Multer จัดการ multipart/form-data เพื่ออัพโหลดไฟล์
- Sharp Image processing จัดการรูปเช่น Resize, Convert หรือ Crop
Security
- CORS ตัวช่วยจัดการ CORS
- Helmet ช่วยเรื่องความปลอดภัย Content Security Policy โดยการตั้งค่า HTTP headers (แต่ถ้าตั้งค่าใน Nginx แล้ว ตัวนี้ไม่ต้องใช้ก็ได้เพราะซ้ำซ้อนและ Overhead)
- csrf-csrf ป้องกัน CSRF
- express-recaptcha, hcaptcha ป้องกัน Spam bot สำหรับ Express.js
- Express Rate Limit จำกัดการ requests ต่อเพื่อป้องกัน Spam bot (แต่ถ้าตั้งค่า Rate Limit ใน Nginx แล้ว ตัวนี้ไม่ต้องใช้ก็ได้เพราะซ้ำซ้อนและ Overhead)
Utility
- connect-redis เชื่อมต่อและจัดการ Redis
- express-session จัดการ session สำหรับ Express.js
- connect-flash ไว้แสดงข้อความครั้งเดียวเช่น แจ้งเตือน (Alert)
- joi สำหรับตรวจสอบข้อมูล (Data validation)
- Lodash สำหรับจัดการตัวแปร arrays, numbers, objects หรือ strings
- date-fns สำหรับจัดการค่าวันที่ (Date)
- Axios จัดการ HTTP Request สำหรับติดต่อ API ในรูปแบบ Promise-based HTTP Client
- Fastest-validator ตรวจสอบความถูกต้องของข้อมูล (ใช้ได้ทั้ง Nodejs, Browser และ Deno)
- express-validator ตรวจสอบความถูกต้องของข้อมูล สำหรับ Express.js
- SendGrid ตัวช่วยส่งอีเมล์
- ESLint ช่วยแนะนำให้เขียนโค้ดตามกฎมาตรฐาน
- Prettier ช่วยจัดรูปแบบโค้ดให้ดูสวยและอ่านง่ายมากขึ้น
- Morgan, winston, pino, loglevel,Log4js สำหรับจัดการ Logging
- node.bcrypt.js ช่วยเข้ารหัส เช่นไว้ใช้กับการเข้ารหัสผ่าน
- artillery ไว้ทำ load testing
- passportjs ไว้ทำ Authentication เช่น JWT, OAuth, Facebook, Google, Twitter
- nodemailer สำหรับส่ง Email ผ่าน SMTP
- compression สำหรับบีบอัดข้อมูลเพิ่ม Performance ในการ Download
- Socket.IO สำหรับทำ Realtime App แบบสื่อสารสองทิศทาง
- Jest สำหรับทำ Unit Test
- Supertest สำหรับทำ API Testing
- EJS แสดงผล Template Engine
- ExcelJS สำหรับจัดการอ่านเขียนไฟล์ Excel (.xlsx, .csv)
- i18n จัดการให้รองรับหลายภาษา
- modern-errors สำหรับจัดการ Errors
- cookie-parser สำหรับอ่าน Cookies