Skip to content

React Project Structure: Best Practices

การจัดโครงสร้างโปรเจกต์ React ให้ดีตั้งแต่แรก คือหัวใจสำคัญของการพัฒนาแอปที่ดูแลต่อได้ง่าย ขยายทีมง่าย และลดปัญหาในระยะยาว มาดูกันว่าแนวคิดสมัยใหม่เป็นอย่างไร และแตกต่างจากแบบดั้งเดิมอย่างไร


โครงสร้างแบบดั้งเดิม (Old School)

มักจะแยกไฟล์ตามชนิด เช่น

src/
  components/
    Header.js
    Footer.js
  pages/
    HomePage.js
    AboutPage.js
  utils/
    api.js
    helpers.js
  App.js
  index.js

ข้อดี: เข้าใจง่ายสำหรับโปรเจกต์เล็กๆ

ข้อเสีย: เมื่อโปรเจกต์ใหญ่ขึ้น จะหาของยาก แก้ไขโค้ดยาก และเกิด dependency ซ้อนกันมั่วได้ง่าย


โครงสร้างแบบ Feature-based (Modern)

แยกตาม "Feature" หรือ "Domain" ของแอป เช่น

src/
  features/
    auth/
      components/
      hooks/
      api.ts
      index.ts
    dashboard/
      components/
      hooks/
      api.ts
      index.ts
  shared/
    components/
    hooks/
    utils/
  App.tsx
  main.tsx

ข้อดี:

  • ทุกอย่างของแต่ละ feature อยู่รวมกัน ดูแลและแก้ไขง่าย
  • ลดปัญหา dependency ซ้อนกันมั่ว
  • scale ทีมได้ดี (แต่ละทีมดูแล feature ของตัวเอง)

ข้อเสีย: ต้องใช้เวลาเรียนรู้แนวคิดเล็กน้อยสำหรับมือใหม่


ตัวอย่างแนวทาง Atomic Design (สำหรับ UI Component)

src/
  components/
    atoms/
    molecules/
    organisms/
    templates/
    pages/
  • atoms: ปุ่ม, input, icon (element เล็กสุด)
  • molecules: รวม atoms เช่น input + label
  • organisms: รวม molecules เช่น form
  • templates/pages: layout หรือหน้าแอป

Best Practices

  • ใช้ TypeScript (.ts/.tsx) เพื่อความปลอดภัยของโค้ด
  • แยกไฟล์ตาม feature/domain เป็นหลัก
  • มีโฟลเดอร์ shared สำหรับของที่ใช้ร่วมกัน
  • ตั้งชื่อไฟล์และโฟลเดอร์ให้สื่อความหมาย
  • ถ้าใช้ state management (เช่น Redux, Zustand) ให้แยก store ของแต่ละ feature
  • ใช้ index.ts สำหรับ export รวมในแต่ละโฟลเดอร์

สรุป

  • โครงสร้างที่ดี = ดูแลง่าย, ขยายง่าย, scale ทีมง่าย
  • อย่ากลัวที่จะ refactor โครงสร้างเมื่อโปรเจกต์โตขึ้น
  • เลือกแบบที่เหมาะกับขนาดทีมและขนาดโปรเจกต์

Tip: อย่าลืมเขียน README หรือ diagram อธิบายโครงสร้างโปรเจกต์ให้ทีมเข้าใจตรงกันเสมอ