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

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

作者: 万里凪 | 来源:发表于2019-02-02 12:12 被阅读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引入对应模块依赖。

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/wglssqtx.html