Nest.js系列学习之初识nest项目框架及服务

当谈到现代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技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • nodejs mysql 实现分页的方法

    接下来我会详细讲解“nodejs mysql 实现分页的方法”的完整攻略。 1. 实现分页的基本原理 在实现分页的过程中,其基本原理是:通过SQL语句获取总数据量和分页数据,从而计算出总页数,再通过LIMIT语句实现指定起始数据和每页数据量的数据获取。 示例SQL语句: SELECT COUNT(*) FROM table_name; // 获取总数据量 S…

    node js 2023年6月8日
    00
  • 一些可能会用到的Node.js面试题

    那接下来我将根据问题进行详细的讲解,并提供一些示例。 什么是Node.js? Node.js是一个开源、跨平台的Javascript运行环境,它允许开发人员在服务器端运行JavaScript代码。Node.js既能作为服务器端的运行环境,也可以作为开发工具。 Node.js有哪些常用的模块? fs模块:用于文件读写操作。 http模块:用于创建Web服务器和…

    node js 2023年6月8日
    00
  • Sequelize中用group by进行分组聚合查询

    下面我来详细讲解一下“Sequelize中用group by进行分组聚合查询”的完整攻略。 什么是group by查询? 在Sequelize中,group by查询是指将某个表按照某个字段分组,然后对每个分组进行聚合操作,比如求和、平均值等,从而得到每个分组的统计结果。 分组聚合查询的语法 在Sequelize中,我们可以使用.findAll()方法进行分…

    node js 2023年6月8日
    00
  • node.js获取参数的常用方法(总结)

    当我们在使用node.js构建web应用时,经常需要从请求中获取参数。下面总结了几种node.js获取参数的常用方法: 1. 使用querystring模块解析url参数 querystring模块是node.js自带的模块,可以用于解析url中的参数。我们可以将url的query部分解析成一个对象,然后直接获取其中的参数即可。示例如下: const htt…

    node js 2023年6月8日
    00
  • node.js监听文件变化的实现方法

    Node.js监听文件变化的实现方法 在Node.js中,监听文件变化并对其进行处理是十分常见的场景。可以使用fs模块的方法实现此功能。fs模块提供了一些方法来监视文件的变化。这里我们介绍一下fs.watch()和fs.watchFile()两种方法。 fs.watch()方法 该方法是基于事件的,当文件发生变化时,会触发相应的事件。具体用法如下: cons…

    node js 2023年6月8日
    00
  • 使用Jenkins自动化构建工具进行敏捷开发

    使用Jenkins自动化构建工具进行敏捷开发的完整攻略如下: 总览 敏捷开发可以节省大量时间,但是仍然需要重复的工作。Jenkins为这样的任务提供了自动化解决方案。Jenkins是一个持续集成和持续交付的服务器,它可以更快地构建、测试和部署应用程序。 我们可以使用Jenkins来将不同的代码版本结合在一起,构建和部署应用程序,并执行其他一些任务,例如生成文…

    node js 2023年6月8日
    00
  • Node.js中的child_process模块详解

    Node.js中的child_process模块详解 简介 child_process 模块提供了以编程方式和 shell (进程的环境)交互的能力。这个模块包含了派生子进程所需的所有功能: child_process.spawn():派生新的进程并与它进行交互。 child_process.exec():执行 shell 命令,等待完成,并且buffer存…

    node js 2023年6月8日
    00
  • discuz中用到的javascript函数解析 原创

    Discuz 中用到的 JavaScript 函数解析 概述 Discuz 是一套优秀的 PHP 论坛系统,其中用到了不少 JavaScript 功能来提升用户体验和交互性。对于开发者来说,掌握 Discuz 中用到的 JavaScript 函数非常重要。本文将详细讲解 Discuz 中常用的 JavaScript 函数及其用法。 常用函数 1. showM…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部