在NodeJs系列课程和Typescript系列课程之后,激动人心的NestJs学习之旅终于开始了。欢迎继续关注NestJs之旅系列文章,介绍Nest(或NestJS)是一个构建高效、可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript,内置并完全支持TypeScript(但仍允许开发人员使用纯JavaScript编写代码)并结合了OOP(面向对象编程)、FP(函数式编程)和FRP(函数式反应式编程)的元素。import{Controller,Get}from'@nestjs/common';@Controller('cats')exportclassCatsController{@Get()findAll():string{return'这个动作返回所有的猫';}}熟悉Java的同学应该会有一种似曾相识的感觉,SpringBoot中广泛使用注解来简化开发。现在,使用基于ES6装饰器构建的NestJs框架,你也可以做到!先说优缺点:完美支持Typescript,可以利用日益繁荣的TS生态资源兼容express中间件,降低造轮子成本。完美支持响应式编程框架rxjs完美支持依赖注入模块化理念,方便开发和后期维护。使用装饰器简化开发,减少样板代码和组件设计,解决Node.js现有的无全栈框架约束的问题。是的,但这些都不是熟练后的缺点:基于TS带来的语言门槛,代码设计对模块化/组件化思维创造有一定的要求。npminstall-g@nestjs/cliinstall命令行工具nest新建项目名初始化项目初始化后可以看到一个完整的项目结果,目录如下(忽略node_modules):├──README.mdreadme文件├──nest-cli.jsonNestJs项目配置├──package.jsonnpm文件├──src项目源码│├──app.controller.spec.ts控制器测试文件│├──app.controller.ts控制器类│├──app.module.ts模块类│├──app.service.ts服务类│└──main.ts项目入口文件├──test测试目录│├──app.e2e-spec.ts应用e2e测试│└──jest-e2e.jsonjeste2e测试配置├──生产环境Typescript使用的tsconfig.build.json├──tsconfig.json开发环境Typescript配置├──tslint.jsontslint配置└──yarn.lockyarnlockFileNestJs有几大类文件,主要有以下几种,其他类型文件在后续课程中讲解;module模块声明(这是NestJs的一大亮点,有点DDD思想)controller控制器(负责接收数据,返回Response)service服务(主要业务逻辑)使用npmrunstart来运行项目。终端输出如下:[Nest]2986-08/19/2019,10:29AM[NestFactory]??StartingNestapplication...[Nest]2986-08/19/2019,10:29AM[InstanceLoader]AppModule依赖项已初始化+22ms[Nest]2986-08/19/2019,上午10:29[RoutesResolver]AppController{/}:+12ms[Nest]2986-08/19/2019,上午10:29[RouterExplorer]已映射{/,GET}route+9ms[Nest]2986-08/19/2019,10:29AM[NestApplication]Nestapplicationsuccessfulstarted+6ms一般来说,如果看到成功,就可以认为启动成功了。如果启动失败,您可以根据错误提示进行处理。更多情况下可能是端口被占用导致的错误。打开浏览器并访问http://localhost:3000以查看输出HelloWorld!。下期待续会介绍Controller,欢迎继续关注!
