
MVC คืออะไร? เดี๋ยวผมเล่าให้ฟัง
MVC คืออะไร? เดี๋ยวผมเล่าให้ฟัง
สวัสดีครับ Blog นี้ผมจะมาเล่าให้ฟังว่า MVC มันคืออะไร เเล้วเราจะได้ใช้ตอนไหน โดยที่ผมจะเล่าให้ฟังแบบง่ายๆ ให้ทุกคนเข้าใจนะครับ ถ้าใครมีอะไรสงสัยหรืออยากแนะนำสามารถ Comment เอาไว้ได้เลยนะครับ…

MVC (Model View Controller) คือ หลักการของการออกแบบโปรแกรม หรือ Design Pattern อย่างหนึ่ง (ยังมีอีกหลากหลายการออกแบบหรือ Design Pattern ให้เลือกใช้กัน) ซึ่งสามารถเอาไปใช้ได้กับหลากหลายภาษาเช่น PHP, Node เป็นต้น โดยที่ MVC นั้นจะแบ่งการทำงานออกเป็น 3 ส่วน ซึ่งผมจะยกตัวอย่าง code จาก adonis.js นะครับ
1. Model
model เป็นส่วนของการเก็บข้อมูล ไม่ว่าจะเป็นรูปแบบใดก็ตาม โดยหน้าที่ของ model ก็คือการเตรียมข้อมูลต่างๆ ที่ต้องการจะเอาไปใช้ ซึ่ง model จะทำงานร่วมกับ controller
เริ่มจากการสร้าง model ขึ้นมาก่อน
2. Controller
controller คือส่วนแรกที่เราจะเข้ามาเจอ ซึ่งทำหน้าที่รับคำสั่งจาก user และประมวลผลจากนั้นก็จัดการหาข้อมูลจาก model และประมวลผลก่อนจะส่งต่อไปยัง view เพื่อ render หน้า UI ให้เราได้เห็นนั้นเอง พูดง่ายๆก็คือ controller นั้นเป็นตัวกลางระหว่าง model กับ view นั้นเอง
สร้าง controller user ขึ้นมาเเล้วทำการเรียก model ที่เรียกที่บรรทัดที่ 1 หลังจากนั้น ถ้ามาการ request มาที่ UserController เรียก index สิ่งที่จะเกิดขึ้นต่อมาก็คือการไปดึงค่า user มาจาก database ที่เราได้ต่อไว้กับ model ในขั้นตอนก่อนหน้านี้(การเรียกนั้นอยู่ที่บรรทัดที่ 6) หลังจากนั้น ในบรรทัดที่ 7 นั้นเราได้ทำการส่งข้อมูลไปที่ view นั้นเอง สังเกตุจากมีการเรียกใช้ sendView นั้นเอง
3. View
view เป็นส่วนของการแสดงผล ซึ่งจะเป็น หน้า HTML หรือ blade template ก็ตาม ซึ่ง view จะ render ข้อมูลที่ได้จากมาจาก controller
หลังจากที่เราได้ข้อมูลจาก controller มาเเล้วนั้นเราสามารถเอาข้อมูลไปใช้ได้ใน HTML ตามที่ต้องการได้เลย จากในตัวอย่างเอา user มาใช้ render เป็น loop ออกมานั้นเอง ส่วน path ของ view นั้นจะอยู่ที่ resources/views/…
ตัวอย่าง folder path ทั้งหมดของ adonis ก็จะเป็นประมาณนี้ครับ

ข้อดีของ MVC
ประหยัดเวลา สามารถ reuseable code, function ได้ง่าย
Code แบ่งเป็นส่วนๆ(Structure ดี) อ่านง่าย และหาส่วนต่างๆได้ง่าย
Maintain ได้ง่ายจากการแบ่ง code ออกเป็นส่วนๆ
ข้อเสียของ MVC
มีขนาด Project ที่ใหญ่ (Framework จะพ่วงส่วนต่างๆที่เราอาจจะไม่ได้ใช้งานมาให้ด้วย)
Logic ต่างๆจะไปอยู่ที่ Controller ซึ่งถ้า project ใหญ่ขึ้นจะทำให้ Controller ใหญ่ขึ้นตามไปด้วย
ต้อง handle data ที่จะส่งไปที่ View เพื่อเวลา render view เเล้วจะได้ไม่ error
บทความที่เกี่ยวข้อง
ธุรกิจ
ทำ SEO ใน NuxtJS ด้วยปลายนิ้ว
วิธีการตั้งค่า SEO ง่าย ๆ ในโปรเจคเว็บที่ใช้ NuxtJS พร้อมแนวคิดเรื่อง metadata, social sharing และการทำให้เว็บค้นหาเจอง่ายขึ้น
ธุรกิจ
ทำความรู้จักกับ MPA & SPA Website
สวัสดีครับวันนี้เราจะมาทบทวนบทเรียนเก่ากันซักหน่อย สำหรับใครหลายๆ คนที่ยังไม่รู้จักกันก็อาจจะได้ความรู้ใหม่ๆ กลับไปครับ แต่สำหรับใครหลายๆ…
ธุรกิจ
แชร์เว็บไซต์ให้น่าสนใจบน Social Network ด้วย Open Graph Protocol และ Twitter Card
รู้จักกับ Open Graph Tags ที่เกี่ยวข้องกับการทำให้ Social Network แสดงเนื้อหาของเราได้สวยงาม เวลานำเอาลิงก์ไปแชร์ยัง Twitter, Facebook