創建並運行 NestJS 專案
什麼是 NestJS?
NestJS 是一個用於構建高效、可擴展的 Node.js 伺服器端應用程序的框架。它使用 TypeScript 編寫,並且受 Angular 的啟發,採用模組化架構和依賴注入(DI)模式。NestJS 提供了強大的工具和功能,使得開發者可以輕鬆構建複雜的應用程序。
NestJS 的主要特性和優勢
- 模組化架構:通過模組來組織代碼,使得應用程序更加結構化和可維護。
- 依賴注入:提供了強大的依賴注入系統,增強了代碼的可測試性和可維護性。
- 使用 TypeScript:利用 TypeScript 的靜態類型檢查和現代 JavaScript 特性,提高了開發效率和代碼質量。
- 豐富的裝飾器:使用裝飾器來定義控制器、服務、模組等,使得代碼更加簡潔和直觀。
- 強大的生態系統:NestJS 擁有豐富的第三方模組和插件支持,使得開發更加便捷。
使用 NestJS,可以幫助開發者快速構建高性能的 Web 應用和 API。
使用 ServBay 創建並運行 NestJS 專案
在這篇文章中,我們將使用 ServBay 提供的 Node.js 環境來創建並運行一個 NestJS 專案。我們將使用 ServBay 的「主機」功能來設置 Web 伺服器,並通過反向代理來實現專案的訪問。
創建 NestJS 專案
初始化專案
首先,確保您已經安裝了 ServBay 提供的 Node.js 環境。然後,使用以下命令全局安裝 NestJS CLI:
bashnpm install -g @nestjs/cli
1在 ServBay 建議的網站根目錄
/Applications/ServBay/www
中創建一個新的 NestJS 專案:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2按照提示輸入專案名稱(建議命名為
servbay-nest-app
),並根據需要選擇其他選項。安裝依賴
進入專案目錄並安裝依賴:
bashcd servbay-nest-app npm install
1
2
修改 NestJS 專案輸出內容
修改
src/app.controller.ts
文件打開
src/app.controller.ts
文件,修改內容使網頁輸出 "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
進入開發模式
運行開發伺服器
啟動開發伺服器並指定端口(例如:8585):
bashPORT=8585 npm run start
1這將會在本地啟動一個開發伺服器,並暴露端口 8585。
配置 ServBay 主機反向代理
使用 ServBay 的「主機」功能,通過反向代理來訪問開發伺服器。在 ServBay 的「主機」設置中,添加一個新的反向代理:
- 名字:
My first NestJS dev site
- 域名:
servbay-nest-test.dev
- 主機類型:
反向代理
- IP:
127.0.0.1
- 端口:
8585
詳細設置步驟請參考添加Nodejs開發的網站。
- 名字:
訪問開發模式
打開瀏覽器,訪問
https://servbay-nest-test.dev
,實時查看專案。由於 ServBay 支持自定義域名以及免費的 SSL 證書,您將享受到更高的安全性。
部署生產版本
準備生產環境
確保您的專案在生產環境中可以正常運行。通常,NestJS 專案不需要特別的構建步驟,但您可能需要設置一些環境變量或進行其他配置。
運行生產伺服器
啟動生產伺服器並指定端口(例如:8586):
bashPORT=8586 NODE_ENV=production npm run start:prod
1配置 ServBay 主機反向代理
使用 ServBay 的「主機」功能,通過反向代理來訪問生產伺服器。在 ServBay 的「主機」設置中,添加一個新的反向代理:
- 名字:
My first NestJS production site
- 域名:
servbay-nest-test.prod
- 主機類型:
反向代理
- IP:
127.0.0.1
- 端口:
8586
- 名字:
訪問生產模式
打開瀏覽器,訪問
https://servbay-nest-test.prod
,查看生產版本。通過 ServBay 的自定義域名和免費的 SSL 證書,您的網站將具有更高的安全性和可信度。
數據庫連接
ServBay 提供了 Redis、MariaDB、PostgreSQL 和 MongoDB 數據庫支持。以下是如何連接這些數據庫的示例。
連接 MongoDB
安裝
@nestjs/mongoose
和mongoose
:bashnpm install @nestjs/mongoose mongoose
1然後在專案中引入並連接:
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
13連接 Redis
安裝
@nestjs/redis
和redis
:bashnpm install @nestjs/redis redis
1然後在專案中引入並連接:
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
15連接 MariaDB
安裝
@nestjs/typeorm
和mysql2
:bashnpm install @nestjs/typeorm mysql2
1然後在專案中引入並連接:
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
22連接 PostgreSQL
安裝
@nestjs/typeorm
和pg
:bashnpm install @nestjs/typeorm pg
1然後在專案中引入並連接:
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
通過以上步驟,您成功創建並運行了一個 NestJS 專案,並使用 ServBay 提供的功能來管理和訪問您的專案,同時連接了多種數據庫。