nestjs学习笔记(一):环境搭建与模式粗略分析

2019-02-02  本文已影响0人  万里凪

该系列其他文章:
nestjs学习笔记(二):使用webpack热重载nestjs

简要提一下安装过程

nestjs是nodejs的一套基于express和typescript实现的服务端框架。之所以学习它是因为它相较其他nodejs框架比较更加系统和工程化。
github: https://github.com/nestjs/nest
英文文档: https://docs.nestjs.com
中文文档: https://docs.nestjs.cn/5.0/firststeps
腾讯云文档: https://cloud.tencent.com/developer/section/1490165
nestjs安装以及脚手架初始化项目:

$ npm i -g @nestjs/cli
$ nest new my-project       #填写你项目名字

之后进入my-project 目录安装相关依赖项。

cd my-project
npm install 

大功告成,现在我们已经搭建好工程了!!

nestjs的目录结构

src
├── app.controller.ts
├── app.module.ts
└── main.ts

这在官方文档里都有,这里我按照我自己的理解进行一些简单类比,如有错误请多多指正。

module.ts

定义一个模块,module是nestjs的核心,其内部引入了 控制器(controller) 和对应 服务提供者(service)模块可以引入子模块的依赖。刚入门感觉nest使用这种方式对每个模块进行了解耦。

controller.ts

nest默认隐藏了路由,当定义controller的时候,默认路由就是创建controller时的修饰器函数里传递的参数

@Controller('cats')
export class CatsController {}

例如定义了controller:CatsController,注意在类上方的修饰器函数传递的参数:“cats”, 那么默认这个控制器影响的路由就是:xxx/cats
控制器中可以定义针对同一路由的不同请求访问,不同的解决方案:

get方式访问/cats 并且不携带id等参数
访问url: xxx/cats

  @Get()
  async findAll(): Promise<any> {
    return 'hello world';
  }

get方式访问/cats 携带两个id参数
访问url: xxx/cats/我是id1/我是id2

  @Get(':id1/:id2')
  async findOne(@Param() params): Promise<any> {
    // 控制器中获取
    return `This action returns a #${params.id1} & #2${params.id2} cat`;
  }

post方式访问/cats
一般用于创建新对象
其中reqParamsObject为post 请求体中携带的参数对象

  @Post()
  async create(@Body() reqParamsObject: ReqParamsObject): Promise<any> {
    return `This action adds a new cat ${JSON.stringify(reqParamsObject)})`;
  }

put方式访问/cats
一般用于更新
访问方式:xxx/cats/这是cat的id
同时携带请求体的更改参数

  @Put(':id')
  update(@Param('id') id, @Body() updateCatDto) {
    return `This action updates a #${id} cat`;
  }

delete方式访问/cats

  @Delete(':id')
  remove(@Param('id') id) {
    return `This action removes a #${id} cat`;
  }
main.ts

主程序的入口,启动服务的地方。内部引入了NestFactory用于依赖注入。通过Factory引入对应模块依赖。

如有不足请多多指正!!!

上一篇下一篇

猜你喜欢

热点阅读