Dark mode
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 อธิบายโครงสร้างโปรเจกต์ให้ทีมเข้าใจตรงกันเสมอ