Bộ định tuyến, Bộ điều khiển trong Express

Tram Ho

Mở đầu

Xin chào các bạn mình đã quay trở lại rồi đây, tiếp tục với series Nodejs cơ bản thì hôm nay mình sẽ giới thiệu đến các bạn Express Router và Controller.Vậy tại sao lại cần chia ra làm gì code kia vẫn đang chạy ổn mà nhỉ . Đúng là code kia vẫn đang chạy được nhưng bạn thử nghĩ xem mình đang code tất cả ở file index.js mà một trang web thì cần quản lý rất nhiều thứ nếu chúng ta vứt tất cả chúng vào 1 file thì việc quản lý rồi việc maintain sẽ rất khó khăn. Khi bạn chia nhỏ ra theo từng đối tượng để quản lý thì khi đó việc công việc maintain hay phát triển thêm tính năng cho đối tượng sẽ dễ dàng hơn nhiều. Phải sửa một file lên đến mấy nghìn dòng OMG việc tìm sửa ở dòng nào đã mệt rồi :v. Thôi không lan man nữa chúng ta bắt đầu luôn nhé

Router

Đầu tiên mình cần tạo một folder và đặt tên là routes để chứa các router mà mình định nghĩa, tiếp theo là mình tạo một file js có tên là product.route.js để chứa các router của product. Phần .router là để mình biết đó là file router thôi còn các bạn không thích thì chỉ cần để .js là được. Bên trong file product.route.js thì chúng ta vần require thằng Express vào và tạo một đối tượng router từ thằng Express. Tiếp theo là chúng ta sẽ copy toàn bộ các router từ bên index.js sang và thay app bằng router. À quên các bạn nhớ phải exports file router ra nhé để lát nữa chúng ta còn require nó trong file index.js. Một lưu ý nữa là ở cả file index.jsproduct.route.js mình đều sử dụng đến phần kết nối với data base vì thế mình sẽ tách phần kết nối với databse ra một file riêng, file nào cần thì sẽ gọi nó vào. Mình đặt tên nó là connect.js với nội dụng như sau.

Tiếp theo là file product.route.js

Tiếp theo là bên file index.js thì mình tạo ra 1 đối tượng productRoute require cái thằng product.route.js vào

và gọi đến nó thôi

File index.js của mình sẽ như thế này

Nhìn gọn hơn lúc trước đúng không :v

Controller

Ở trên mình đã tách ra file router rồi, nhưng trên thực tế thì file router người ta chỉ dùng để định nghĩa ra các router còn logic xử lý thì người ta lại tách ra một file riêng gọi là Controller tương tự mô hình MVC. Vì thế mình sẽ thực hiện tách phần logic ở bên router ra một file mới, phần logic ở đây chính là các function đó. Tương tự phần Router mình cũng taọ một folder controller và một file product.controller.js. Bây giờ mình cần làm ở file product.controller.js là exports các function ra và bên router cần thì sẽ gọi đến.

Ví dụ bên router có 1 router như sau

Thì bên controller mình sẽ exports ra 1 hàm đặt tên là index như sau:

khi đó bên file router chỉ cần require thằng controller vào

và router gọi đến thằng controller.index là được

Làm tương tự cho các router và controller khác. thì mình có file controller như sau

À vì có sử dụng đến phần kết nối databse nên các bạn nhớ require thằng conn mà mình đã tạo ở trên vào nhé.
File router như sau

Kết luận

Vậy là mình đã giới thiệu đến các bạn về Router và Controller trong Express để giúp code của chúng ta phần nào rõ ràng và dễ bảo trì hơn. Bài viết còn phần nào thiếu sót rất mong các bạn comment xuống bên dưới để mình được bổ sung, nếu thấy bài viết hữu ích thì hãy cho mình một upvote nhé, Ấn follow để có thể theo dõi được những bài viết mới nhất của mình nhé. Cảm ơn các bạn đã đón đọc.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo