创建并运行 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 提供的功能来管理和访问您的项目,同时连接了多种数据库。