Triển khai Kiến trúc sạch với Nest.JS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Triển khai một kiến ​​trúc sạch với Nest.JS

Bài viết này dành cho những người đam mê cố gắng viết mã sạch, có thể mở rộng và quan trọng hơn là có thể cấu trúc lại. Nó sẽ đưa ra ý tưởng về cách Nest.JS có thể giúp chúng ta viết mã sạch và kiến ​​trúc cơ bản mà nó sử dụng.

Việc triển khai một kiến ​​trúc sạch với Nest.JS trước tiên sẽ yêu cầu chúng ta phải hiểu khuôn khổ này là gì và nó hoạt động như thế nào.

Nest hay Nest.JS là một khuôn khổ để xây dựng các ứng dụng Node.js hiệu quả, có thể mở rộng (phía máy chủ) được xây dựng bằng TypeScript. Nó sử dụng Express hoặc Fastify và cho phép mức độ trừu tượng để cho phép các nhà phát triển sử dụng nhiều mô-đun (bên thứ ba) trong mã của họ.

Hãy cùng tìm hiểu sâu hơn về kiến ​​trúc sạch sẽ này là gì. 

Vâng, tất cả các bạn có thể đã sử dụng hoặc ít nhất là nghe nói về kiến ​​trúc MVC. MVC là viết tắt của Model, View, Controller. Ý tưởng đằng sau điều này là tách cấu trúc dự án của chúng tôi thành 3 phần khác nhau.

1. Mô hình: Nó sẽ chứa tệp Đối tượng ánh xạ với Quan hệ / Tài liệu trong DB.

2. Bộ điều khiển: Nó là trình xử lý yêu cầu và chịu trách nhiệm thực hiện logic nghiệp vụ và tất cả các thao tác dữ liệu.

3. Xem: Phần này sẽ chứa các tệp liên quan đến việc hiển thị dữ liệu, tệp HTML hoặc một số tệp công cụ tạo khuôn mẫu.

Để tạo một mô hình, chúng ta cần một số loại công cụ / mô-đun / thư viện ORM / ODM để xây dựng nó. Ví dụ: nếu bạn trực tiếp sử dụng mô-đun, hãy nói 'phần tiếp theo', sau đó sử dụng mô-đun tương tự để triển khai đăng nhập trong bộ điều khiển của bạn và làm cho logic kinh doanh cốt lõi của bạn phụ thuộc vào 'phần tiếp theo'. Bây giờ, cuối cùng, giả sử sau 10 năm, có một công cụ tốt hơn trên thị trường mà bạn muốn sử dụng, nhưng ngay sau khi bạn thay thế phần tiếp theo bằng nó, bạn sẽ phải thay đổi rất nhiều dòng mã để ngăn chặn nó. phá vỡ. Ngoài ra, bạn sẽ phải kiểm tra tất cả các tính năng một lần nữa để kiểm tra xem nó có được triển khai thành công hay không, điều này cũng có thể lãng phí thời gian và tài nguyên quý giá. Để vượt qua thử thách này, chúng ta có thể sử dụng nguyên tắc cuối cùng của SOLID là Nguyên tắc đảo ngược phụ thuộc và một kỹ thuật được gọi là tiêm phụ thuộc để tránh tình trạng lộn xộn như vậy.

Bạn vẫn còn bối rối? Hãy để tôi giải thích chi tiết.

Vì vậy, những gì Nguyên tắc đảo ngược phụ thuộc nói một cách đơn giản là, bạn tạo ra logic kinh doanh cốt lõi của mình và sau đó xây dựng sự phụ thuộc xung quanh nó. Nói cách khác, giải phóng logic cốt lõi và các quy tắc kinh doanh của bạn khỏi bất kỳ loại phụ thuộc nào và sửa đổi các lớp bên ngoài theo cách mà chúng phụ thuộc vào logic cốt lõi của bạn thay vì logic của bạn phụ thuộc vào điều này. Kiến trúc sạch là thế. Nó loại bỏ sự phụ thuộc khỏi logic kinh doanh cốt lõi của bạn và xây dựng hệ thống xung quanh nó theo cách mà họ dường như phụ thuộc vào nó hơn là phụ thuộc vào họ.

Chúng ta hãy cố gắng hiểu điều này với sơ đồ dưới đây.

nguồn: Hình nón kiến ​​trúc sạch 

Bạn có thể thấy rằng chúng tôi đã chia kiến ​​trúc của mình thành 4 lớp:

1. Thực thể: Về cốt lõi, các thực thể là các mô hình (Quy tắc doanh nghiệp) xác định các quy tắc doanh nghiệp của bạn và cho biết ứng dụng nói về điều gì. Lớp này sẽ hầu như không thay đổi theo thời gian và thường là trừu tượng và không thể truy cập trực tiếp. Ví dụ: mọi ứng dụng đều có 'người dùng'. Tất cả các trường mà người dùng nên lưu trữ, loại của chúng và quan hệ với các thực thể khác sẽ bao gồm một Thực thể.

2. Các trường hợp sử dụng: Nó cho chúng ta biết làm thế nào chúng ta có thể thực hiện các quy tắc doanh nghiệp. Hãy lấy ví dụ về người dùng một lần nữa. Bây giờ chúng ta biết dữ liệu nào sẽ được vận hành, trường hợp sử dụng cho chúng ta biết cách hoạt động dựa trên dữ liệu này, chẳng hạn như người dùng sẽ có mật khẩu cần được mã hóa, người dùng cần được tạo và mật khẩu có thể được thay đổi bất kỳ lúc nào thời điểm nhất định, v.v.

3. Bộ điều khiển / Cổng: Đây là những kênh giúp chúng tôi triển khai các ca sử dụng bằng cách sử dụng các công cụ và thư viện bên ngoài bằng cách sử dụng chèn phụ thuộc.

4. Công cụ bên ngoài: Tất cả các công cụ và thư viện chúng tôi sử dụng để xây dựng logic của chúng tôi sẽ nằm dưới lớp này, ví dụ. ORM, Emailer, Mã hóa, v.v.

Các công cụ chúng tôi sử dụng sẽ phụ thuộc vào cách chúng tôi phân bổ chúng để sử dụng các trường hợp và đến lượt nó, các trường hợp sử dụng sẽ phụ thuộc vào các thực thể là cốt lõi của hoạt động kinh doanh của chúng tôi. Bằng cách này, chúng tôi đã đảo ngược sự phụ thuộc từ bên ngoài vào bên trong. Đó là những gì mà Nguyên tắc đảo ngược phụ thuộc của SOLID ngụ ý.

Được rồi, bây giờ, bạn đã nắm được ý chính của Nest.JS và hiểu cách thức hoạt động của kiến ​​trúc sạch. Bây giờ câu hỏi được đặt ra, làm thế nào hai điều này có liên quan với nhau?  

Chúng ta hãy cố gắng hiểu 3 khối xây dựng của Nest.JS là gì và mỗi khối trong số chúng có chức năng gì.

  1. Mô-đun: Nest.JS được cấu trúc theo cách mà chúng ta có thể coi mỗi tính năng như một mô-đun. Ví dụ: bất kỳ thứ gì được liên kết với Người dùng như mô hình, bộ điều khiển, DTO, giao diện, v.v., đều có thể được tách biệt dưới dạng mô-đun. Một mô-đun có một bộ điều khiển và một loạt các nhà cung cấp có các chức năng có thể xử lý được như dịch vụ, orm, emailer, v.v.
  1. Bộ điều khiển: Bộ điều khiển trong Nest.JS là giao diện giữa mạng và logic của bạn. Chúng được sử dụng để xử lý các yêu cầu và trả lại phản hồi cho phía máy khách của ứng dụng (ví dụ: lệnh gọi tới API).
  1. Nhà cung cấp (Dịch vụ): Nhà cung cấp là các dịch vụ / chức năng có thể tiêm vào mà chúng tôi có thể đưa vào bộ điều khiển và các nhà cung cấp khác để cung cấp tính linh hoạt và chức năng bổ sung. Chúng trừu tượng hóa bất kỳ hình thức phức tạp và logic nào.

Tóm lại,

  • Chúng tôi có bộ điều khiển hoạt động như giao diện (lớp thứ 3 của kiến ​​trúc sạch)
  • Chúng tôi có các nhà cung cấp có thể được đưa vào để cung cấp chức năng (lớp thứ 4 của kiến ​​trúc sạch: DB, Thiết bị, v.v.)
  • Chúng tôi cũng có thể tạo các dịch vụ và kho lưu trữ để xác định trường hợp sử dụng của chúng tôi (Lớp thứ 2)
  • Chúng tôi có thể xác định các thực thể của mình bằng cách sử dụng các nhà cung cấp DB (Lớp thứ nhất)

Kết luận:

Nest.JS là một khung công tác Node.JS mạnh mẽ và là bản định kiểu nổi tiếng nhất hiện nay. Bây giờ bạn đã hiểu rõ về khung công tác này, bạn phải tự hỏi liệu chúng ta có thể sử dụng nó để xây dựng một cấu trúc dự án với một kiến ​​trúc sạch hay không. Vâng, câu trả lời là có! Chắc chắn rồi. Làm sao? Tôi sẽ giải thích trong loạt bài tiếp theo của bài viết này. 

Cho đến khi đó, hãy theo dõi!

Thông tin về các Tác giả:

Junaid Bhat hiện đang làm Trưởng nhóm kỹ thuật trong Mantra Labs. Anh ấy là một người đam mê công nghệ đang phấn đấu để trở thành một kỹ sư giỏi hơn mỗi ngày bằng cách tuân theo các tiêu chuẩn của ngành và hướng tới cách tiếp cận có cấu trúc hơn để giải quyết vấn đề. 

Đọc blog mới nhất của chúng tôi: Golang-Beego Framework và các ứng dụng của nó

Kiến thức có giá trị được gửi trong hộp thư đến của bạn

Dấu thời gian:

Thêm từ Phòng thí nghiệm thần chú