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

该系列其他文章:
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引入对应模块依赖。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容