何为nest.js

Nestjs是一个基于渐进式JavaScript的框架,用于构建可扩展的Node.js服务端应用,它结合了OOP、FP和FRP。Nest使用Express或Fastify作为底层HTTPServer,并提供了更高层次的抽象。本文介绍了如何创建Nestjs的Controller、Service和Module,以及展示了代码示例。Nestjs受到了Angular的影响,带来了类似前端的结构优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。

在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。

官网:https://nestjs.com/

中文网站:https://docs.nestjs.cn/

GitHub: https://github.com/nestjs/nest

安装

npm i -g @nestjs/cli 或者 cnpm i -g @nestjs/cli 或者 yarn global add @nestjs/cli

nest new project-name

Nestjs的Controller怎么写的: 

import { Body, Param, Controller, Get, Post, UseGuards, Query, UseInterceptors } from '@nestjs/common';
import { PostService } from "./post.service";
import { ApiTags } from '@nestjs/swagger';
import { TransformInterceptor } from 'src/common/httpHandle/transform.interceptor';

@ApiTags('post')
@Controller('post')
export class PostController {
  constructor(private readonly postService: PostService) {}

  @Get('list')
  @UseInterceptors(new TransformInterceptor())
  async getPostList(@Query() query: any) {
    return await this.postService.getPostList(query.workType)
  }
}

Nestjs的Service 怎么写的: 

import { Injectable } from '@nestjs/common';
import * as Sequelize from 'sequelize'; // 引入 Sequelize 库
import sequelize from '../../database/sequelize'; 

@Injectable()
export class PostService {
  async getPostList(): Promise<any> {
    const sql = `
      SELECT
        post_id id, 
        company_name companyName,
        post_name postName,
        post_type postType, 
        work_type workType, 
        duty_type dutyType, 
        post_req_limit_age postReqLimitAge,
        post_province postProvince,
        post_city postCity, 
        head_count headCount,
        post_req_workyear postReqWorkyear, 
        post_req_age_from postReqAgeFrom, 
        post_req_age_to postReqAgeTo,
        post_req_gender postReqGender,
        post_req_degree postReqDegree
      FROM
        post_info
    `;
    try {
      const list = (
        await sequelize.query(sql, {
          type: Sequelize.QueryTypes.SELECT, // 查询方式
          raw: true, // 是否使用数组组装的方式展示结果
          logging: false, // 是否将 SQL 语句打印到控制台
        })
      );
      return list;
    } catch (error) {
      return {
        code: 503,
        msg: `Service error: ${error}`,
      };
    }
  }
}

Nestjs的Module 怎么写的:

import { Module } from '@nestjs/common';
import { PostService } from "./post.service";
import { TestService } from "../test/test.service";        // 使用其他服务

@Module({
  providers: [PostService, TestService ],
  exports: [PostService]
})
export class PostModule {}

Nest深受Angular的影响,借鉴了Ag的一系列前端设计思路,特别是其代码结构。让Angular易于开发大型前端的优势也发挥在Node服务器端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值