当谈到现代Web应用程序开发时,Nest.js是一个值得注意的框架,它基于Node.js,使用了TypeScript和面向对象的编程模式。本文将向您介绍Nest.js框架及其服务的基础知识。
开始篇
Nest.js的介绍
Nest.js主要用于构建可伸缩、高度可维护的Web应用程序。它封装了很多常用的库和技术,在设计上基于AngularJS的思想,提供了一种高效、有条理、易于维护的方法来构建Node.js应用程序。
安装以及基础框架
在开始使用Nest.js之前,您需要先安装Node.js和npm。然后,可以使用npm安装Nest.js框架:
npm install -g @nestjs/cli
安装成功后,使用以下命令创建一个新的Nest.js应用程序:
nest new myapp
上面的命令创建了一个新的Nest.js应用程序,其中包含一个简单的controller,以及使用了Express的默认浏览器引擎。
创建第一个Controller
接下来,我们创建一个新的controller来练习一下Nest.js的基础知识。
使用以下命令创建一个controller:
nest generate controller users
上述命令将生成一个名为“users”的controller,并在“myapp”目录中的“src”的“controllers”文件夹内生成相关文件。
打开“users.controller.ts”文件,并添加以下代码:
import { Controller, Get } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Get()
findAll(): string {
return 'This will return all users';
}
}
在上面的代码中,我们创建了一个名为“users”的controller,并且创建了一个使用“@Get()”修饰符的方法,该方法会返回“所有用户”这个字符串。
创建第一个Service
现在,我们将创建一个新的service,以便在controller中使用方法。
使用以下命令创建一个service:
nest generate service users
使用上述命令后,在“myapp”目录中的“src”的“services”文件夹中将生成一个名为“users.service.ts”的文件。
打开“users.service.ts”文件,并添加以下代码:
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
private readonly users: string[];
constructor() {
this.users = ['John', 'Doe', 'Smith'];
}
findAll(): string[] {
return this.users;
}
}
在上面的代码中,我们创建了一个名为“users”的service。它包含一个私有的数组“users”,以及一个返回该数组的方法“findAll()”。
Refactoring Controller代码
在接下来的步骤中,我们将在controller中使用我们新创建的service。
打开“users.controller.ts”文件,并更新以下代码:
import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get()
findAll(): string[] {
return this.usersService.findAll();
}
}
在上面的代码中,我们通过导入“UsersService”,然后通过在controller的构造函数中注入它,使其对userService进行实例化。我们现在可以使用“usersService”对象来调用“findAll()”方法,这个方法将返回所有用户。
结束篇
本文向您介绍了Nest.js框架及其服务的基础知识,包括如何安装框架以及如何创建一个controller和service,并将它们连接在一起。在实践中,您可以将您自己的controller和service添加到这个原型示例中。
示例1
接下来,我们将使用如下命令在Nest.js项目中创建一个新的module:
nest generate module cats
上述命令将在“src”文件夹下创建一个名为“cats”的文件夹,并在其中创建一个带有“@Module()”修饰符的“cats.module.ts”文件。
在“cats.module.ts”文件中,您可以使用“@Controller()”标记创建一个controller,可以使用“@Injectable()”注释创建一个service,并使用“@Inject()”注释将一个service注入到另一个service或controller中。
示例2
接下来,我们将使用如下代码在Nest.js项目中创建一个新的Middleware:
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response } from 'express';
import { NextFunction } from 'express-serve-static-core';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('Request...');
next();
}
}
上面的代码创建了一个叫做“LoggerMiddleware”的middleware,该middleware记录所有接收到的HTTP请求,并将其输出到控制台中。
在“main.ts”文件中,您可以使用如下代码将这个new middleware应用到您的应用程序中:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { LoggerMiddleware } from './logger.middleware';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(new LoggerMiddleware());
await app.listen(3000);
}
bootstrap();
在上面的代码中,我们调用了“app.use()”方法,并传入了一个新的实例“LoggerMiddleware”,以将middleware应用到应用程序中。此时访问应用程序时,所有传入的HTTP请求都将记录在控制台中。
希望在本文中能给您带来帮助,让您对Nest.js框架有更深入的了解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nest.js系列学习之初识nest项目框架及服务 - Python技术站