Tạo và chạy dự án NestJS
NestJS là gì?
NestJS là một framework dùng để xây dựng các ứng dụng phía server hiệu quả và dễ mở rộng trên Node.js. Nó được viết bằng TypeScript và lấy cảm hứng từ Angular, sử dụng kiến trúc module và mô hình tiêm phụ thuộc (DI). NestJS cung cấp các công cụ và tính năng mạnh mẽ giúp các nhà phát triển dễ dàng xây dựng các ứng dụng phức tạp.
Những tính năng và ưu điểm chính của NestJS
- Kiến trúc module hóa: Tổ chức mã nguồn theo module, giúp ứng dụng trở nên có cấu trúc và dễ dàng bảo trì hơn.
- Tiêm phụ thuộc: Cung cấp hệ thống tiêm phụ thuộc mạnh mẽ, tăng khả năng kiểm thử và bảo trì mã nguồn.
- Sử dụng TypeScript: Tận dụng kiểm tra kiểu tĩnh của TypeScript và các tính năng hiện đại của JavaScript, cải thiện hiệu suất phát triển và chất lượng mã nguồn.
- Trang bị nhiều Decorator phong phú: Sử dụng các decorator để định nghĩa controller, service, module, v.v., giúp mã code trở nên gọn gàng và trực quan hơn.
- Hệ sinh thái mạnh mẽ: NestJS có nhiều module và plugin từ bên thứ ba hỗ trợ, giúp phát triển trở nên tiện lợi hơn.
Sử dụng NestJS có thể giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng web và API có hiệu năng cao.
Tạo và chạy dự án NestJS bằng ServBay
Trong bài viết này, chúng ta sẽ sử dụng môi trường Node.js do ServBay cung cấp để tạo và chạy một dự án NestJS. Chúng ta sẽ sử dụng tính năng 'Host' của ServBay để thiết lập máy chủ web và truy cập dự án thông qua proxy ngược.
Tạo dự án NestJS
Khởi tạo dự án
Trước hết, đảm bảo rằng bạn đã cài đặt môi trường Node.js do ServBay cung cấp. Sau đó, sử dụng lệnh sau để cài đặt NestJS CLI toàn cầu:
bashnpm install -g @nestjs/cli
1Tạo một dự án NestJS mới trong thư mục gốc của trang web được đề xuất bởi ServBay
/Applications/ServBay/www
:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Nhập tên dự án theo đề xuất (
servbay-nest-app
), và chọn các tùy chọn khác nếu cần.Cài đặt phụ thuộc
Chuyển đến thư mục dự án và cài đặt các phụ thuộc:
bashcd servbay-nest-app npm install
1
2
Thay đổi nội dung đầu ra của dự án NestJS
Chỉnh sửa file
src/app.controller.ts
Mở file
src/app.controller.ts
, thay đổi nội dung để trang web xuất ra "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; @Controller() export class AppController { @Get() getHello(): string { return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
Chạy chế độ phát triển
Chạy máy chủ phát triển
Khởi chạy máy chủ phát triển và chỉ định cổng (ví dụ: 8585):
bashPORT=8585 npm run start
1Điều này sẽ khởi chạy một máy chủ phát triển trên máy cục bộ và mở cổng 8585.
Cấu hình proxy ngược ServBay host
Sử dụng tính năng 'Host' của ServBay để truy cập máy chủ phát triển thông qua proxy ngược. Trong cấu hình 'Host' của ServBay, thêm một proxy ngược mới:
- Tên:
My first NestJS dev site
- Domain:
servbay-nest-test.dev
- Loại host:
Proxy ngược
- IP:
127.0.0.1
- Cổng:
8585
Tham khảo chi tiết các bước thiết lập tại Thêm website phát triển Nodejs.
- Tên:
Truy cập chế độ phát triển
Mở trình duyệt và truy cập
https://servbay-nest-test.dev
để xem ứng dụng của bạn hoạt động trong thời gian thực. Vì ServBay hỗ trợ tên miền tùy chỉnh và chứng chỉ SSL miễn phí, bạn sẽ nhận được mức độ bảo mật cao hơn.
Triển khai bản sản xuất
Chuẩn bị môi trường sản xuất
Đảm bảo rằng dự án của bạn có thể chạy ổn định trong môi trường sản xuất. Thông thường, dự án NestJS không cần bước xây dựng đặc biệt nào, nhưng bạn có thể cần thiết lập một số biến môi trường hoặc cấu hình khác.
Chạy máy chủ sản xuất
Khởi chạy máy chủ sản xuất và chỉ định cổng (ví dụ: 8586):
bashPORT=8586 NODE_ENV=production npm run start:prod
1Cấu hình proxy ngược ServBay host
Sử dụng tính năng 'Host' của ServBay để truy cập máy chủ sản xuất thông qua proxy ngược. Trong cấu hình 'Host' của ServBay, thêm một proxy ngược mới:
- Tên:
My first NestJS production site
- Domain:
servbay-nest-test.prod
- Loại host:
Proxy ngược
- IP:
127.0.0.1
- Cổng:
8586
- Tên:
Truy cập chế độ sản xuất
Mở trình duyệt và truy cập
https://servbay-nest-test.prod
để kiểm tra phiên bản sản xuất của ứng dụng. Với tên miền tùy chỉnh và chứng chỉ SSL miễn phí của ServBay, trang web của bạn sẽ có mức độ bảo mật và độ tin cậy cao hơn.
Kết nối cơ sở dữ liệu
ServBay cung cấp hỗ trợ cho các cơ sở dữ liệu như Redis, MariaDB, PostgreSQL và MongoDB. Dưới đây là ví dụ cách kết nối với những cơ sở dữ liệu này.
Kết nối MongoDB
Cài đặt
@nestjs/mongoose
vàmongoose
:bashnpm install @nestjs/mongoose mongoose
1Sau đó, nhập và kết nối trong dự án:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost/servbay-nest-app'), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13Kết nối Redis
Cài đặt
@nestjs/redis
vàredis
:bashnpm install @nestjs/redis redis
1Sau đó, nhập và kết nối trong dự án:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Kết nối MariaDB
Cài đặt
@nestjs/typeorm
vàmysql2
:bashnpm install @nestjs/typeorm mysql2
1Sau đó, nhập và kết nối trong dự án:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Kết nối PostgreSQL
Cài đặt
@nestjs/typeorm
vàpg
:bashnpm install @nestjs/typeorm pg
1Sau đó, nhập và kết nối trong dự án:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'user', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Thông qua các bước trên, bạn đã thành công tạo và chạy một dự án NestJS và sử dụng các tính năng do ServBay cung cấp để quản lý và truy cập dự án của bạn, đồng thời kết nối với nhiều loại cơ sở dữ liệu khác nhau.