Hiện nay để xây dựng 1 Web application thì mô hình MVC là rất phổ biến. Mô hình này có thể thấy ở mọi Framework của các ngôn ngữ lập trình như Ruby, Python, PHP, ASP.Net, NodeJS,… Các Framework đều dự trên mô hình MVC làm chuẩn để hỗ trợ xây dựng Web application vs các gói hỗ trợ cho từng loại ngôn ngữ.
Vậy khi xây dựng một Web application người lập trình viên cần nắm rõ nó cũng như nắm được dòng chảy của các biến trong một chương trình để có thể debug và tìm lỗi ngược về nơi nó bắt đầu đến khi nảy sinh lỗi.
Vậy dòng chảy chung của vars cho một hệ thống vs mô hình MVC như thế nào?
- Giữa M <-> V <-> C:
- Ta có thể thấy ngay ở sơ đồ bên dưới: Controllers luôn làm nhiệm vụ xử lý dữ liệu và giao tiếp vs Models để xử lý dữ liệu và chuyển cho views sau cùng.
- Controllers được phép yêu cầu sử dụng views nào và truyền xuống cho views những giá trị vs các tên biến cụ thể.
- Models nhận các giá trị từ controllers và xử lý rồi trả ra giá trị controllers cần
- Views luôn luôn chỉ nhận giá trị và ko có khả năng xử lý giá trị trả lại cho controllers (lưu ý views là điểm cuối của dòng chảy biến, views chỉ có thể hỗ trợ gửi vars lên controllers bằng các requests từ phí client)
- Giữa các block_views và view_layout.
-
Với một Web application thì trong views cũng cần có sự kế thừa, dùng lại code nên cơ chế tạo template và render layout là cần thiết. vì vậy trong mô hình MVC, lớp Views luôn luôn hỗ trợ cơ chế này: Một layouts luôn là khung xương chính cho cả Websites, Và các Block_view sẽ hiển thị các thông tin theo yêu cầu của từng page.
- Nhìn tổng quan vào hình bên dưới chúng ta sẽ thấy lớp Views ban đầu sẽ được khởi tạo từ một layouts. Và layouts đó bắt đầu include các block_content phù hợp vào để hiển thị, vì thế các giá trị biến trong layout sẽ có thể sử dụng được trong block_content cũng như, layouts sẽ hứng được đầu tiên các giá trị mà controllers truyền xuống
- Giữa các block_content thì giá trị thông thường sẽ được sử dụng và truyền theo thứ tự block_content nào được nạp vào trước, block_content nạp sau có thể sử dụng được một số giá trị global của block_content trước đã xử lý.
-
Đó là những gì tổng quan và cơ bản nhất về dòng chảy của các biến (giá trị) trong mô hình MVC, giúp cho các bạn Lập trình viên có thể tìm hiểu và debug nguyên nhân gây ra lỗi trong hệ thống.
Kt: Tan Bui.