Vào năm 2021, JavaScript là ngôn ngữ lập trình được sử dụng rộng rãi nhất.
Sự hấp dẫn của công nghệ này là không thể phủ nhận, bởi có rất nhiều khuôn khổ cho phép lập trình JavaScript.
Có Angular, React và Vue trên frontend, cũng như Express và Next trên backend, phải kể đến một số.
Với rất nhiều khuôn khổ tuyệt vời dành cho lập trình phụ trợ bằng JavaScript có thể truy cập được, bạn có thể nghĩ tại sao tôi lại tìm kiếm thứ gì đó khác hơn là chỉ đơn giản sử dụng Express hoặc Next.
Có lẽ bạn cần bắt đầu quá trình phát triển một cách nhanh chóng với một bản soạn sẵn phù hợp, và việc thêm thủ công không chỉ các bộ điều khiển mới mà cả các dịch vụ cũng khiến bạn khó chịu.
Hoặc bạn muốn tạo phần mềm lớn, có khả năng mở rộng và quản lý đơn giản. Hoặc có lẽ bạn chỉ muốn làm việc một cách hiệu quả và thuận tiện hơn.
Bất kể điều nào đúng trong hoàn cảnh của bạn, Nest.js có thể là giải pháp hoàn hảo cho nhu cầu của bạn.
Bài đăng này sẽ cung cấp thông tin chi tiết về NestJS cũng như kinh nghiệm thực hành.
NestJS là gì?
NestJS là một khung Node tiến bộ có nguồn mở, có thể mở rộng và có thể thích ứng .Js khuôn khổ để xây dựng, hệ thống phụ trợ hấp dẫn và đầy thử thách. Hiện nó là Node có tốc độ phát triển nhanh nhất.
Khung TypeScript cho js. NestJS được sử dụng để tạo các ứng dụng có thể mở rộng, có thể kiểm tra và kết nối lỏng lẻo.
Nó bổ sung khả năng mở rộng cho Node. Máy chủ Js đã được đưa lên một cấp độ hoàn toàn mới. PostgreSQL, MongoDB và MySQL nằm trong số các cơ sở dữ liệu được hỗ trợ.
NestJS có thể mở rộng vì nó có thể được sử dụng với các thư viện khác; linh hoạt vì hệ sinh thái hoàn chỉnh có thể thích ứng của nó. Và tiến bộ vì nó hỗ trợ các tính năng JavaScript và các nguyên tắc thiết kế.
Nó chủ yếu bị ảnh hưởng bởi Angular, React và Vue và đi kèm với tính năng tiêm phụ thuộc được tích hợp sẵn.
Tính năng
- Nó đơn giản để sử dụng, học hỏi và thành thạo.
- Nó miễn phí và mã nguồn mở (Giấy phép MIT)
- Giao diện dòng lệnh mạnh mẽ (CLI) để tăng năng suất và phát triển đơn giản
- Các chương trình kiểm thử đơn vị dễ sử dụng
- TypeScript, một ngôn ngữ được đánh máy chặt chẽ là một tập hợp siêu của JavaScript, được sử dụng.
- Phát triển và duy trì một cơ sở mã đang hoạt động.
- Hỗ trợ hàng trăm mô-đun dành riêng cho tổ giúp dễ dàng giao tiếp với các công nghệ và ý tưởng phổ biến như TypeORM, Mongoose, GraphQL, ghi nhật ký, xác thực, bộ nhớ đệm, WebSockets, v.v.
Các khối xây dựng của NestJS là gì?
Các thành phần xây dựng của ứng dụng Nest được liệt kê bên dưới; có những cái khác, nhưng ba cái này là quan trọng nhất. Chúng ta hãy xem xét chúng một cách nhanh chóng.
KHAI THÁC. Bộ điều khiển
Bộ điều khiển chịu trách nhiệm xử lý các yêu cầu gửi đến và phản hồi cho khách hàng. Nó nhận các yêu cầu HTTP cụ thể và hệ thống định tuyến xác định bộ điều khiển nào nhận được yêu cầu nào.
Sau đó, nó sẽ soạn thảo một câu trả lời phù hợp để gửi đi. Với sự trợ giúp của các lớp và bộ trang trí, một bộ sưu tập đơn giản được xây dựng và mỗi bộ điều khiển có một bộ lộ trình riêng để thực hiện các tác vụ khác nhau.
2. Nhà cung cấp
Nhà cung cấp là một ý tưởng chính trong Nest. Nhiều lớp Nest cốt lõi - dịch vụ, kho lưu trữ, nhà máy, trình trợ giúp, v.v. - có thể được xử lý như nhà cung cấp.
Khái niệm cơ bản của nhà cung cấp là nó có thể được tiêm như một phụ thuộc; điều này ngụ ý rằng các đối tượng có thể hình thành các liên kết khác nhau với nhau và vai trò “kết nối” các cá thể của đối tượng chủ yếu có thể được thuê ngoài hệ thống thời gian chạy Nest.
KHAI THÁC. Mô-đun
Mô-đun là một lớp với trình trang trí @Module () tổ chức các thành phần trong cấu trúc của ứng dụng. Mỗi ứng dụng có một mô-đun gốc được sử dụng để xây dựng biểu đồ ứng dụng, sơ đồ này giải quyết thêm các sự phụ thuộc và tương tác giữa trình cung cấp và mô-đun.
Trình trang trí này cung cấp siêu dữ liệu cho Nest.js để xác định các thành phần, bộ điều khiển hoặc các tài nguyên khác sẽ được sử dụng trong mã ứng dụng và kết hợp chúng thành một tập hợp duy nhất.
Mỗi mô-đun có một tập hợp các khả năng được kết nối theo một cách nào đó.
Bắt đầu với NestJS
1. Cài đặt
Hãy cài đặt NestJS và tạo một dự án với nó bằng cách làm theo các bước sau:
Cấu trúc thư mục sau sẽ được tạo ra do:
KHAI THÁC. Bộ điều khiển
Các khối xây dựng của Nest là bộ điều khiển. Đây là những vị trí mà các yêu cầu gửi đến sẽ được xử lý. Bạn có thể chỉ định đường dẫn tuyến bằng các trình sửa đổi phương thức HTTP (Nhận, Đăng, Đặt, Xóa, v.v.), như được thấy trong đoạn mã bên dưới.
Nestjs sử dụng phương pháp trang trí và chủ yếu được phát triển trong Typecript, mặc dù nó cũng hỗ trợ JavaScript. Bạn cũng có thể sử dụng trình xác thực lớp để xác thực phần thân yêu cầu.
Tôi sẽ tạo một phiên bản máy chủ Nestjs và thêm ValidationPipe trên toàn cầu. Pipes chỉ là các phương thức thực thi trước Bộ điều khiển. Pipes cũng có thể được áp dụng ở cấp phương thức / đối số bằng cách sử dụng trình trang trí @UsePipes.
3. Nhà cung cấp
Nhà cung cấp là một thành phần quan trọng khác của Nestjs. Cho đến nay, tôi đang lưu trữ dữ liệu trong một biến tạm thời. Đó là lý do tại sao một tác vụ đơn giản như vậy có thể được thực hiện bằng các trình xử lý Controller.
Tuy nhiên, đối với logic lớn hơn, phức tạp hơn, việc tách mã và sử dụng lại sẽ rất khó khăn. Đây là lúc các nhà cung cấp đến. Bạn có thể khai báo / tạo một nhà cung cấp trên cùng một lớp bằng cách sử dụng trình trang trí @Injectable. Sau đó, bằng cách sử dụng các nhà cung cấp, bạn có thể thực hiện chèn phụ thuộc, ghi nhật ký và các tác vụ khác.
KHAI THÁC. Mô-đun
Các mô-đun Nestjs không mang tính toàn cầu; thay vào đó, chúng có chiều sâu.
Tuy nhiên, nó cũng có thể được chia sẻ với bất kỳ mô-đun nào khác. Mặc dù nó, giống như Angular, cung cấp các Mô-đun toàn cầu, nhưng tốt hơn hết bạn nên giữ Dịch vụ / Bộ điều khiển trong mô-đun nơi chúng được sử dụng phổ biến nhất trong Nestjs.
NestCLI được sử dụng để sản xuất các mô-đun hầu hết thời gian và các nhà cung cấp / bộ điều khiển được tạo trong ngữ cảnh của mô-đun đó sẽ được CLI tự động thêm vào. Chúng được gọi là mô-đun tính năng.
5. Bộ lọc ngoại lệ
Bộ lọc ngoại lệ là trình xử lý lỗi được gọi khi Bộ điều khiển ném một ngoại lệ. Nó tự động quản lý vấn đề và đưa ra thông báo lỗi thích hợp, thân thiện với người dùng.
Nhiều Ngoại lệ kế thừa HttpException được cung cấp bởi gói @ nestjs / common, bao gồm NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException và nhiều ngoại lệ khác. Bạn thậm chí có thể thiết kế ExceptionFilter của riêng mình.
6. Phần mềm trung gian
Một chức năng được gọi trước trình xử lý tuyến đường được gọi là phần mềm trung gian. Các đối tượng yêu cầu và phản hồi, cũng như chức năng phần mềm trung gian () tiếp theo trong chu trình phản hồi yêu cầu của ứng dụng, đều có thể truy cập được vào các chức năng phần mềm trung gian.
Một biến được gọi là next thường được sử dụng để xác định chức năng phần mềm trung gian tiếp theo. Phần mềm trung gian Custom Nest có thể được triển khai trong một phương thức hoặc một lớp bằng cách sử dụng trình trang trí @Injectable ().
7. Vệ binh
Những người lính canh chỉ chịu trách nhiệm về một việc. Họ có trách nhiệm đánh giá xem liệu yêu cầu có được xử lý bởi bộ điều khiển hay không dựa trên các trường hợp cụ thể (Cụ thể là logic do người dùng xác định).
Nó hữu ích cho việc xác thực / ủy quyền và là phương pháp được khuyến nghị trong Nestjs.
Mặc dù xác thực / quyền, v.v., có thể được thực hiện bằng phần mềm trung gian, nhưng nó không được thực hiện trong các máy chủ HTTP express hoặc các máy chủ HTTP khác vì chúng không có ngữ cảnh mạnh liên quan và không có lý do gì để biết phương pháp nào sẽ được sử dụng để xử lý yêu cầu.
Ưu điểm
- Khung công tác phụ thuộc rất nhiều vào các chú thích, được sử dụng để tạo ra bất kỳ thứ gì từ điểm cuối đến tài liệu Swagger. Các điểm cuối là cơ bản và gọn gàng, và các chú thích nói chung làm cho việc phát triển dễ dàng hơn.
- Thật đơn giản để ngoại hóa các mô-đun có mục đích chung và sử dụng lại mã trong nhiều dự án vì Nest.js là một khung dựa trên mô-đun.
- Cấu trúc thư mục của Nest.js bị ảnh hưởng đáng kể bởi Angular. Khi thiết kế một dịch vụ Nest, điều này cho phép giảm thiểu thời gian ngừng hoạt động.
- Các thành phần có thư mục riêng, với thư mục gốc chứa mô-đun ứng dụng và tệp chính. Vì sự đơn giản của cấu trúc, có thể chú ý nhiều hơn đến thiết kế của các điểm cuối và khách hàng của chúng hơn là cấu trúc của ứng dụng.
- Nest, giống như Angular, cung cấp một công cụ dòng lệnh tuyệt vời, Nestjs / cli, có sẵn thông qua Trình quản lý gói Node.
Điểm yếus
- Nest có lợi thế về việc sử dụng TypeScript và tích hợp Angular, nhưng lại thiếu sự hỗ trợ tài chính của một tập đoàn lớn.
- Việc thiếu tài liệu là mối đe dọa lớn nhất đối với người dùng Nest. Mặc dù khung công tác có khả năng tương tác tuyệt vời với các khung công tác khác, nhưng tài liệu còn thưa thớt và không giải quyết được bất kỳ khó khăn tiềm ẩn nào.
- Nest có lợi thế hơn về việc sử dụng TypeScript và Angular.
Kết luận
NestJS cung cấp cho các nhà phát triển một bước tiến lớn. Để bắt đầu phát triển, tất cả những gì bạn cần làm là tạo một ứng dụng mới và bạn tốt để đi. Khuôn khổ này cung cấp một sự thúc đẩy đáng kể ngay lập tức, đồng thời hỗ trợ bạn thực hiện các giai đoạn bổ sung bằng cách thiết lập một kiến trúc ứng dụng phù hợp.
Nó sử dụng các phương pháp và công nghệ tiên tiến để tạo ra các ứng dụng có thể quản lý được và lâu dài. Nó có thể được sử dụng để kết nối với GraphQL, WebSockets và xây dựng các dịch vụ nhỏ.
Bình luận