1. NestJS là gì?
NestJS là một framework Node.js mạnh mẽ được xây dựng trên nền tảng TypeScript, giúp tạo ra các ứng dụng server-side với cấu trúc hiện đại và dễ dàng mở rộng. NestJS áp dụng các khái niệm từ Angular, như Dependency Injection và Modules, giúp cho việc phát triển ứng dụng trở nên trực quan và tổ chức hơn.
2. Tại sao nên sử dụng NestJS?
NestJS mang lại nhiều lợi ích vượt trội cho việc phát triển ứng dụng:
Kiến trúc mô-đun: NestJS cho phép chia ứng dụng thành các module độc lập, giúp quản lý mã nguồn dễ dàng và cải thiện khả năng mở rộng.
Hỗ trợ TypeScript: NestJS sử dụng TypeScript mặc định, cung cấp tính năng kiểm tra kiểu (type checking) mạnh mẽ, giúp giảm thiểu lỗi trong quá trình phát triển.
Tích hợp dễ dàng: NestJS có thể dễ dàng tích hợp với các thư viện, framework khác như Express, Fastify, và thậm chí là các công cụ ORM như TypeORM hoặc Sequelize.
Tài liệu phong phú: NestJS có tài liệu chi tiết, cộng đồng phát triển đông đảo, giúp người mới bắt đầu nhanh chóng làm quen và nắm bắt.
3. Cài đặt môi trường phát triển NestJS
Trước khi bắt đầu, bạn cần cài đặt Node.js và npm (Node Package Manager). Bạn có thể tải về phiên bản mới nhất từ trang chủ Node.js.
Sau khi cài đặt Node.js và npm, bạn cần cài đặt NestJS CLI (Command Line Interface) bằng lệnh sau:
npm install -g @nestjs/cli
4. Tạo dự án NestJS đầu tiên
Sau khi cài đặt NestJS CLI, bạn có thể tạo một dự án mới bằng lệnh:
nest new project-name
Trong đó project-name
là tên của dự án của bạn. NestJS CLI sẽ yêu cầu bạn chọn package manager (npm hoặc yarn) để quản lý các dependencies.
5. Cấu trúc dự án NestJS
Sau khi dự án được tạo, cấu trúc thư mục của NestJS sẽ trông như sau:
src/
│
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts
main.ts: Đây là file khởi động của ứng dụng, nơi NestJS bootstrap ứng dụng.
app.module.ts: Đây là module chính của ứng dụng, chứa các khai báo module con, controllers, và services.
app.controller.ts: Đây là controller đầu tiên được tạo ra, xử lý các yêu cầu HTTP và trả về phản hồi.
app.service.ts: Đây là service cung cấp các logic nghiệp vụ cho controller.
6. Hiểu về Modules, Controllers và Services
Modules: Modules là các khối cơ bản của ứng dụng NestJS, giúp tổ chức và quản lý các thành phần khác như controllers và services. Mỗi ứng dụng NestJS ít nhất có một module chính là AppModule
.
Controllers: Controllers chịu trách nhiệm xử lý các yêu cầu từ client và trả về phản hồi. Mỗi route trong ứng dụng sẽ được gán cho một phương thức trong controller.
Services: Services chứa logic nghiệp vụ của ứng dụng và thường được sử dụng để chia sẻ dữ liệu và xử lý giữa các controllers.
7. Tạo module, controller, và service mới
Bạn có thể sử dụng CLI để tạo các thành phần mới. Ví dụ, để tạo một module mới tên là Users
, bạn có thể sử dụng lệnh:
nest generate module users
Để tạo một controller và service cho module Users
, bạn có thể sử dụng các lệnh:
nest generate controller users
nest generate service users
8. Tích hợp với cơ sở dữ liệu
NestJS hỗ trợ tích hợp với nhiều loại cơ sở dữ liệu khác nhau như MySQL, PostgreSQL, MongoDB, v.v. Một trong những cách phổ biến nhất để làm việc với cơ sở dữ liệu trong NestJS là sử dụng TypeORM.
Để cài đặt TypeORM và driver cho cơ sở dữ liệu (ví dụ PostgreSQL), bạn có thể sử dụng lệnh:
npm install --save @nestjs/typeorm typeorm pg
Sau đó, cấu hình kết nối cơ sở dữ liệu trong app.module.ts
:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'test',
password: 'test',
database: 'test',
entities: [],
synchronize: true,
}),
],
})
export class AppModule {}
9. Xử lý Middleware và Guards
Middleware: Middleware là các hàm có thể thực thi trước khi các request đi vào controller. Middleware thường được sử dụng để thực hiện các tác vụ như xác thực, logging, hoặc xử lý lỗi.
Guards: Guards được sử dụng để kiểm tra các điều kiện trước khi cho phép một route được xử lý. Đây là công cụ mạnh mẽ để quản lý quyền truy cập trong ứng dụng.
10. Deploy ứng dụng NestJS
Sau khi phát triển xong, bạn có thể deploy ứng dụng NestJS lên các nền tảng như Heroku, AWS, hoặc sử dụng Docker để containerize ứng dụng.
Ví dụ, để deploy lên Heroku, bạn cần tạo một file Procfile
trong thư mục gốc của dự án với nội dung:
web: npm run start:prod
Sau đó, bạn có thể sử dụng Heroku CLI để deploy ứng dụng:
heroku create
git push heroku master
11. Kết luận
NestJS là một framework mạnh mẽ và linh hoạt, phù hợp cho cả người mới bắt đầu lẫn những lập trình viên chuyên nghiệp. Bằng cách sử dụng NestJS, bạn có thể dễ dàng xây dựng các ứng dụng web server-side hiện đại, bảo mật và dễ mở rộng. Hy vọng rằng bài viết này đã giúp bạn nắm bắt được những kiến thức cơ bản về NestJS và cách để bắt đầu với framework này.
Kết nối với web designer Lê Thành Nam