nest框架基本认识(一)

我们常用的node的框架有expresskoaFastifymicrokeystonenest等,一般市场上比较流行的是expresskoa,如果你熟悉angular2+及喜欢用typescript或者你是做java开发的,我推荐用nest,本人也是更喜欢typescript的语法,尝试用这个框架开发东西,不过在日常项目中还是用的koa,官网地址

一、项目的基本创建(个人建议直接克隆官网的,俗称种子文件)

  • 1、步骤

    git clone https://github.com/nestjs/typescript-starter.git project
    cd project
    npm install
    npm run start:watch
    
  • 2、具体目录结构

    
    project
      |-src
        |-app.controller.ts
        |-app.module.ts
        |-main.ts
      |-index.js
      |-nodemon.json
      |-package.json
      |-README.md
      |-tsconfig.json
      |-tslint.json
      
    
  • 3、src文件夹下几个重要文件介绍

    • main.ts是主入口文件
    • app.module.ts是总的module文件
    • app.controller.ts是官方提供输出一个hello word文件

二、简单的使用

  • 1、直接在app.controller.ts里面

    import { Get, Controller, Post, Response, Param, HttpStatus, Request } from '@nestjs/common';
    
    @Controller()
    export class AppController {
    	@Get()
    	root(): string {
        return 'Hello World!';
      }
      @Get('/user/:id')
      user(@Response() res, @Param('id') id) {
        console.log(id)
        res.status(HttpStatus.OK).json({
          name: 'hello',
          age: 20
        });
      }
    }
    

三、关于客户端传递参数到服务器端的几种方式

  • 1、get的情况下一

    import { Controller, Get, Response, HttpStatus, Param } from '@nestjs/common'
    import { UsersService } from './users.service';
    
    @Controller('users')
    export class UsersController {
    
      @Get('/:id')
      getUser( @Response() res, @Param('id') id) {
        console.log(id);
        ...
      }
    
    }
    **访问方式**
    //http://localhost:4000/users/2
    
  • 2、get的情况下二

    import { Controller, Get, Response, Request } from '@nestjs/common'
    
    @Controller('users')
    export class UsersController {
    
      @Get('/')
      getUser( @Response() res, @Request() req) {
        console.log(req.query)
        ...
      }
    }
    **访问方式**
    //http://localhost:4000/users?age=10&name=hello
    
  • 3、使用post获取数据

    import { Controller, Post, Response, Request } from '@nestjs/common'
    
    @Controller('users')
    export class UsersController {
    
      @Post()
      addUser( @Response() res, @Request() req) {
        console.log(req.body, '///')
        ....
      }
    }
    
  • 4、使用post获取数据

    import { Controller, Post, Response, HttpStatus, Body } from '@nestjs/common'
    import { UsersService } from './users.service';
    
    @Controller('users')
    export class UsersController {
      @Post('/add')
      addUser1(@Response() res, @Body() user) {
        console.log(user);
        res.status(HttpStatus.CREATED).json({})
      }
    }
    

四、项目开发中使用组件化(app方式构建项目[django中叫app])

  • 1、新增一个用户users的目录

  • 2、在文件夹中创建三个(最基本的文件)

    • users.module.ts
    • users.controller.ts
    • users.service.ts
  • 3、将users.controller.tsusers.service.ts注册到users.module.ts

  • 4、组件的module注入到app.module.ts里面

  • 5、具体代码请查看users组件或者food组件

五、代码见

六、查看博主更多文章

ABP框架NestJS框架都属于现代化的全栈框架,它们各自有独特的特性和目标应用场景。下面是关于这两种框架的一些对比: ### 功能特性 #### ABP框架 ABP框架是基于Autofac DI容器的一个开源项目,侧重于解决中型到大型企业的复杂应用开发挑战。它强调了模块化设计、自动化配置、依赖注入以及高性能API服务开发。 **特点**: - **模块化**:支持应用的模块化构建,便于分层开发和版本管理。 - **自动化配置**:内置了丰富的自动化配置系统,减少手动配置的工作量。 - **安全性**:提供了一套完整的企业级安全策略和工具。 - **性能**:注重代码质量和性能优化。 #### NestJS框架 NestJS是一个用TypeScript编写的现代Node.js全栈框架,由Google赞助并持续发展。它的目标是为了构建可扩展、可维护和高可用的微服务应用程序。 **特点**: - **模版驱动**:提供了丰富的一键生成模板,能够快速创建项目结构和文件。 - **模块化**:支持RESTful API和GraphQL API,通过模块化可以实现高度解耦。 - **类型检查**:利用TypeScript的强大类型系统提高代码质量。 - **可插拔**:通过插件系统支持自定义功能扩展。 ### 使用场景 - **ABP框架**适合于需要高度定制化、模块化、自动化配置以及对企业级安全有高要求的大规模应用开发。 - **NestJS框架**则更适用于快速搭建微服务架构的项目,特别是当团队熟悉TypeScript并且需要高生产效率及高质量代码时。 ### 总结 选择ABP框架还是NestJS取决于项目的具体需求和团队的技术栈偏好。如果项目规模大、安全要求高,并且希望采用成熟的开源解决方案,则ABP可能是更好的选择。而如果是新项目,尤其考虑到团队成员对TypeScript和微服务架构熟练度较高时,NestJS能提供更为快速高效的开发体验。 ### 相关问题: 1. ABP框架NestJS框架的核心区别是什么? 2. 如果我的项目主要是Web应用开发,是否更适合选择NestJS? 3. ABP框架相比其他框架,在处理大规模并发请求时有何优势?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值