Skip to content

bukton123/neversitup

Repository files navigation

การ Setup Project Structure เป็นรูปเเบบของ Hexagonal Architecture โดยปรับใช้กับ NestJS

ตัวอย่างการวาง Folder Structure

├── src/
│  ├── application/
│  │  ├── {name}.service.ts
│  ├── domain/
│  │  ├── model/
│  │  │  ├── {name}.ts
│  │  ├── ports/
│  │  │  ├── inbound/
│  │  │  │  ├── {name}.service.ts
│  │  │  ├── outbound/
│  │  │  │  ├── {name}.repository.ts
│  ├── infrastructure/
│  │  ├── {name}.repository.ts
│  ├── interface/
│  │  ├── dto/
│  │  ├── validator/
│  │  ├── {name}.controller.ts
│  ├── main.ts

คำอธิบายโครงสร้างในเเต่ละส่วนมีอะไรบ้าง?

  • application คือ ส่วนกลางของการจัดการด้าน Bussiness Logic ต่างๆ ที่ใช้ประมวลผลกับส่วนงานอื่นๆ ตั้งเเต่การนำข้อมูลเข้าเเละนำออกไป โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .service.ts เสมอ ยกตัวอย่างเช่น users.service.ts
  • domain คือ การกำหนดประเภขของข้อมูลเเละฟังก์ชันที่อนุญาตให้ใช้งาน สามารถกำหนดรูปเเบบข้อมูล การรับค่าผ่านฟังก์ชัน เเละการส่งข้อมูลกลับ เพื่อให้สามารถปรับการใช้งานได้ถูกต้อง เหมือนกันทั้งหมดที่มีการนำไปปรับใช้กับ application, infrastructure
    • model คือ การกำหนดรูปเเบบของข้อมูลที่ใช้ในการรับเเละส่ง ไปยังส่วนต่างๆ ที่ทำงานร่วมกับ application
    • ports คือ การกำหนดรูปเเบบฟังก์ชันสำหรับเรียกใช้งานในส่วนของ application(inbound), infrastructure(outbound) เพื่อให้การนำไปใช้งานได้ถูกต้องเเละตรงกับ spec ที่เราตั้งไว้เพื่อให้ช่องทางการสื่อสารได้ชัดเจน
  • infrastructure คือ เป็นส่วนเบื้องหลังของการเชื่อมต่อกับ external resource ต่างๆ เช่น database, queue, http เป็นต้น ซึ่งทำให้ง่ายต่อการสับเปลี่ยนเครื่องมื่อได้ง่าย เพราะรูปเเบบฟังก์ชันการทำงานถูกกำหนดตาม deomin/outbound เราปรับใช้งานให้ตรงก็เพียงพอเเล้ว โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .repository.ts เสมอ ยกตัวอย่างเช่น users.repository.ts หรือ users.mongodb.repository.ts
  • interface คือ เป็นส่วนงานเบื้องหน้า เเละทำหน้าที่เป็น Presentation Layer สำหรับแปลงชุดข้อมูลได้จากรับมาเเละส่งข้อมูลไปยังผู้ใช้งาน สามารถปรับใช้งานได้หลากหลาย ตั้งเเต่การกำหนด http handler, path, body สำหรับรับข้อมูล เเละการ validate ข้อมูล โดยหลัการสร้างไฟล์สำหรับการทำงานนั้นจะขึ้นต้นด้วยหน้าที่ของงาน เเละต่อท้ายด้วย .controller.ts เสมอ ยกตัวอย่างเช่น users.controller.ts หรือ users.controller.ts
    • dto คือ ส่วนของการกำหนดชุดข้อมูล body เเละการกำหนด validate ของข้อมูลที่ได้จาก http
    • validator คือ ส่วนของการ custom validation ที่ไม่มีให้ต้องการใช้ในเเบบของตัวเอง

หลักการตั้งชื่อไฟล์

เราใช้รูปเเบบ Kebab Case ซึ่งเป็นการเขียนคำประสมด้วยอักษรตัวพิมพ์เล็กและแยกคำเหล่านั้นด้วยเครื่องหมายขีดกลาง ("-")

ยกตัวอย่าง

users.controller.ts
user-registers.controller.ts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published