แนะนำ Node.js Libraries

Sirichai Teerapattarasakul

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