介绍
Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。
在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。
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服务器端。