Tổng quan NestJS và cài đặt

NestJS là một NodeJS framework tiến bộ để xây dựng các ứng dụng server-side hiệu quả, đáng tin cậy cùng với khả năng mở rộng dễ dàng.

Thiết kế kiến trúc Test - Driven Development (TDD) cho dự án với NestJS

Tổng quan NestJS và cài đặt
Tổng quan NestJS và cài đặt

Trong nhiều năm trở lại đây, cùng với sự phát triển của NodeJS, Javascript đã trở thành một ngôn ngữ lập trình tuyệt vời cho cả phía server-side và client-side. Đi kèm với sự phát triển mạnh mẽ của NodeJS là sự ra đời của hàng tá các framework khác nhau. Tuy nhiên, chưa có một framework nào giải quyết được triệt để vấn đề căn bản của NodeJS - đó chính là Infrastructure

NodeJS cũng như Javascript đem lại sự thoải mái cho developers với cung cách "code sao cũng chạy". Tuy nhiên, điều đó sẽ dẫn tới ác mộng khi dự án phình to hay làm việc với một team lớn, một dự án với nhiều thành phần phức tạp, hoặc những dự án cần mở rộng liên tục.

Nest cung cấp một kiến ​​trúc tuyệt vời cho phép developers cũng như các teams tạo ra các ứng dụng testable, scalable, giảm thiểu phụ thuộc lẫn nhau và dễ dàng bảo trì. Kiến trúc này được lấy cảm hứng từ Angular, dĩ nhiên rồi, ông co-founder cũng như developer chính cho dự án là chuyên gia lập trình của Google.

NestJS là sự kết hợp tốt nhất cho thiết kế lập trình hướng đối tượng (OOP) và phản ứng chức năng (FRP). Do đó, nó có khả năng tăng gấp đôi năng suất làm việc của developers cũng như hiệu suất ứng dụng, đồng thời tiết kiệm nhiều thời gian quý báu.

 

NestJS cung cấp sẵn những đồ chơi nào cho anh em?

  • Được xây dựng hoàn toàn trên Typescript, tuy nhiên ai rảnh cũng có thể dùng Javascript thuần nếu muốn.
  • Kiến trúc module hóa hoàn toàn, giúp giảm thiểu sự phụ thuộc lẫn nhau cùng khả năng tái sử dụng code dễ dàng hơn.
  • Ứng dụng mô hình MVC truyền thống kèm theo Dependency Injection cực kỳ thân thiện cho các developers đã từng biết Angular ^_^.
  • Cung cấp một hệ sinh thái modules có sẵn cho bạn. Cái gì bạn cần, nó đều có. Cái gì nó không có ư? Ok, nó cung cấp các methods giúp bạn sử dụng hầu hết các NodeJS packages khác.
    • GraphQL
    • Web Sockets
    • Redis
    • RabbitMQ
    • Kafka
    • ...
  • Dễ dàng tích hợp với các framework khác như ExpressFastify.

Đây là những thứ mình cực kỳ thích ở NestJS. Thứ bạn cần quan tâm là business logic và code sao cho đúng chuẩn, còn Infrastructure đã có người khác lo. Yên tâm ha ^_^.

 

Cài đặt

Để bắt đầu một dự án NestJS, bạn có thể sử dụng Nest CLI hoặc clone một starter project từ github.

 

Clone từ starter project

$ git clone https://github.com/nestjs/typescript-starter.git demo-nestjs
$ cd demo-nestjs
$ npm install
$ npm run start

 

Sử dụng Nest CLI

$ npm i -g @nestjs/cli
$ nest new demo-nestjs

Ở bước này, bạn có thể chọn yarn hoặc npm làm packages manager.

Nest CLI sẽ tạo ra cho bạn một project mới có cấu trúc như sau

src
  ├──app.controller.spec.ts
  ├──app.controller.ts
  ├──app.module.ts
  ├──app.service.ts
  ├──main.ts
test
  ├──app.e2e-spec.ts
  ├──jest-e2e.json
.eslintrc.js
.gitignore
.prettierrc
nest-cli.json
package.json
package-lock.json
README.md
tsconfig.build.json
tsconfig.json
  • src: thư mục gốc của dự án.
  • test: nơi chứa các file test e2e.
  • nest-cli.json: cấu hình Nest CLI.
  • tsconfig.json: cấu hình Typescript transpiler.

 

Sau đó chạy lệnh sau để khởi chạy ứng dụng

$ npm run start

Bây giờ thì mở trình duyệt lên và truy cập http://localhost:3000 để thưởng thức nào ^_^

 

Kết

Chắc hẳn các bạn đã hiểu cơ bản hơn về NestJS rồi đúng không? Bài viết tiếp theo mình sẽ phân tích rõ hơn về các thành phần như Controllers và Services nhé.

Comments

Bài viết nổi bật

PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Ở bài viết này mình sẽ hướng dẫn bạn bắt đầu xây dựng một ứng dụng HMVC với Laravel, và tận dụng sức mạnh của Composer khi quản lí modules.
Có khá nhiều bạn đã yêu cầu mình một bài viết về Repository Design Pattern. Vậy mục đích của nó là gì? Nó có thực sự cần thiết cho ứng dụng của bạn hay không? Những điểm mạnh, điểm yếu của nó là gì? Chúng ta cùng đi sâu tìm hiểu qua bài viết này nhé.
Trong quá trình làm việc với Laravel Eloquent ORM, chắc hẳn các bạn từng thực hiện khá nhiều tác vụ lặp đi lặp lại - mà bạn không hề biết Laravel đã hỗ trợ sẵn. Thông qua vài mẹo và thủ thuật nhỏ trong bài viết này, mình hi vọng sẽ giúp các bạn giảm bớt sự phức tạp khi viết code cũng như bớt nhàm chán khi thực hiện các tác vụ lặp đi lặp lại theo cách thông thường.
Như đã được thông báo vào năm 2018, React Native đã và đang được đội ngũ phát triển của Facebook nỗ lực tái kiến trúc nhằm giúp nền tảng này trở nên mạnh mẽ hơn và giải quyết một số vấn đề phổ biến mà các nhà phát triển đã gặp phải trong vài năm qua.

Mục lục

Related posts

Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
Giới thiệu series NestJS
191
Qua series này, các bạn sẽ hiểu hơn về sức mạnh của NodeJS cũng như xây dựng một kiến trúc ứng dụng xanh sạch đẹp hết sức có thể, thỏa mãn tinh thần Test - Driven Development.
Redux là một framework quản lý state dựa trên ý tưởng: tất cả các state của ứng dụng sẽ được lưu xuống một global state và sử dụng các reducer function để tương tác với chúng.
Styled-Components là một thư viện giúp bạn tổ chức và quản lý styles trong các dự án sử dụng React tuân theo đề xuất từ Facebook.
Decorators trong Typescript
1400
Các bạn dev nào từng làm Angular chắc sẽ khá quen thuộc với Decorators đúng không? Nhưng bạn thật sự đã hiểu rõ về nó hay chưa? Chúng ta hãy cùng nhau ôn bài một tí nhé ^_^
PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.
Snappy là một thư viện PHP cho phép tạo các thumnails, snapshots và PDF từ URL hoặc trang HTML. Tác giả Barryvdh đã viết thư viện Laravel Snappy giúp việc tích hợp với Laravel dễ dàng hơn.
Bạn có thể sử dụng tính năng kiểm tra kiểu dữ liệu của Typescript để xác định các interface cho các components, nhằm chắc chắn rằng component của bạn chỉ nhận được các thông tin đầu vào chính xác.
Bài viết này cung cấp một cái nhìn tổng quan ngắn gọn về TypeScript, tập trung vào hệ thống kiểu dữ liệu của nó.
Hooks là một tính năng bổ sung mới từ React 16.8 trở đi. Chúng cho phép bạn sử dụng State và các tính năng khác của React mà không cần viết một class.
Giới thiệu series react
727
Một vài kiến thức cơ bản cũng như nâng cao mà mình sẽ tổng hợp lại trong quá trình làm việc cũng như self learning

Tin mới nhất

Lúc trước mình hay sử dụng cách này trên laptop phụ của mình, giờ mua license luôn rồi. Hôm nay mình xin chia sẻ cho bạn nào cần nhé.
NestJS là một NodeJS framework tiến bộ để xây dựng các ứng dụng server-side hiệu quả, đáng tin cậy cùng với khả năng mở rộng dễ dàng.
Giới thiệu series NestJS
191
Qua series này, các bạn sẽ hiểu hơn về sức mạnh của NodeJS cũng như xây dựng một kiến trúc ứng dụng xanh sạch đẹp hết sức có thể, thỏa mãn tinh thần Test - Driven Development.
Redux là một framework quản lý state dựa trên ý tưởng: tất cả các state của ứng dụng sẽ được lưu xuống một global state và sử dụng các reducer function để tương tác với chúng.
Styled-Components là một thư viện giúp bạn tổ chức và quản lý styles trong các dự án sử dụng React tuân theo đề xuất từ Facebook.
Decorators trong Typescript
1400
Các bạn dev nào từng làm Angular chắc sẽ khá quen thuộc với Decorators đúng không? Nhưng bạn thật sự đã hiểu rõ về nó hay chưa? Chúng ta hãy cùng nhau ôn bài một tí nhé ^_^
PHP là ngôn ngữ được sử dụng rộng rãi nhất trên thế giới trong lập trình web. Nó cũng bị ghét nhất. Nhưng tại sao nhiều developer lại ghét nó đến vậy? Hôm nay chúng ta hãy cùng tìm hiểu lý do xem chúng có thuyết phục không nhé ^_^
Là developer, chúng ta luôn tìm cách để tiết kiệm thời gian cho các dự án của mình. Đó là lý do tại sao các thư viện được tạo ra để giảm bớt các khó khăn khi triển khai những thứ lặp đi lặp lại. Với các frontend framework như React, việc chia sẻ chức năng chung cho các dự án khác nhau trở nên dễ dàng hơn bao giờ hết.
Snappy là một thư viện PHP cho phép tạo các thumnails, snapshots và PDF từ URL hoặc trang HTML. Tác giả Barryvdh đã viết thư viện Laravel Snappy giúp việc tích hợp với Laravel dễ dàng hơn.
IRAC (Issue - Rule - Analysis - Conclusion) là một phương pháp phổ biến và quen thuộc với sinh viên luật và dân luật nói chung. Cá nhân mình thấy phương pháp này khá hay và hoàn toàn có thể áp dụng vào bất cứ công việc hoặc ngành nghề nào.
Bạn có thể sử dụng tính năng kiểm tra kiểu dữ liệu của Typescript để xác định các interface cho các components, nhằm chắc chắn rằng component của bạn chỉ nhận được các thông tin đầu vào chính xác.
Bài viết này cung cấp một cái nhìn tổng quan ngắn gọn về TypeScript, tập trung vào hệ thống kiểu dữ liệu của nó.
NestJS là một NodeJS framework tiến bộ để xây dựng các ứng dụng server-side hiệu quả, đáng tin cậy cùng với khả năng mở rộng dễ dàng.
Giới thiệu series NestJS
191
Qua series này, các bạn sẽ hiểu hơn về sức mạnh của NodeJS cũng như xây dựng một kiến trúc ứng dụng xanh sạch đẹp hết sức có thể, thỏa mãn tinh thần Test - Driven Development.