经过NodeJs系列课程和Typescript系列课程,终于开始了激动人心的NestJs学习之旅。

欢迎持续关注NestJs之旅系列文章

介绍
Nest(或NestJS)是一个用于构建高效,可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript,内置并完全支持TypeScript(但仍然允许开发人员使用纯JavaScript编写代码)并结合了OOP(面向对象编程),FP(功能编程)和FRP(功能反应编程)的元素。

import { Controller, Get } from '@nestjs/common';@Controller('cats')export class CatsController {@Get()findAll(): string {return 'This action returns all cats';}}

熟悉Java的同学应该有似曾相识的感觉,SpringBoot中大量使用注解来简化开发。现在,使用基于ES6装饰器构建的NestJs框架,你也可以做到!

优缺点
先说说优点吧:

  • 完美支持Typescript,因此可以使用日益繁荣的TS生态资源

  • 兼容express中间件,降低造轮子成本

  • 完美支持响应式编程框架rxjs

  • 完美支持依赖注入

  • 模块化思想,方便开发以及后期维护

  • 使用装饰器简化开发,减少样板代码

  • 组件化设计,解决Node.js无全栈框架约束的现存问题

当然,”缺点”也是有点的,不过熟练之后这些都不是缺点:

  • 基于TS导致的语言门槛

  • 代码设计上对模块化/组件化思想有一定要求

第一个NestJs应用
使用NestJs的命令行工具,可以简化项目的创建以及项目文件的创建。

  1. npm install -g @nestjs/cli安装命令行工具

  2. nest new 项目名称初始化项目

初始化完毕后可以看到一个完整的项目结果,目录如下(忽略node_modules):

├── README.md                       自述文件├── nest-cli.json                   NestJs项目配置├── package.json                    npm文件├── src                             项目源码│   ├── app.controller.spec.ts      控制器测试文件│   ├── app.controller.ts           控制器类│   ├── app.module.ts               模块类│   ├── app.service.ts              服务类│   └── main.ts                     项目入口文件├── test                            测试目录│   ├── app.e2e-spec.ts             应用e2e测试│   └── jest-e2e.json               jest e2e测试配置├── tsconfig.build.json             生产环境Typescript所用├── tsconfig.json                   开发环境Typescript配置├── tslint.json                     tslint配置└── yarn.lock                       yarn锁文件

NestJs有几大类文件是主要的是下面几种,其他类型的文件在后续课程会讲解;

  • module 模块声明(这是NestJs的一个亮点,有点DDD的思想)

  • controller 控制器(负责接收数据,返回响应)

  • service 服务(主要业务逻辑)

使用npm run start来运行项目。终端输出如下:

[Nest] 2986   - 08/19/2019, 10:29 AM   [NestFactory] Starting Nest application...[Nest] 2986   - 08/19/2019, 10:29 AM   [InstanceLoader] AppModule dependencies initialized +22ms[Nest] 2986   - 08/19/2019, 10:29 AM   [RoutesResolver] AppController {/}: +12ms[Nest] 2986   - 08/19/2019, 10:29 AM   [RouterExplorer] Mapped {/, GET} route +9ms[Nest] 2986   - 08/19/2019, 10:29 AM   [NestApplication] Nest application successfully started +6ms

一般来说,看到successfully就可以认为启动成功了。启动失败的话可以根据错误提示进行处理,比较多的情况可能是端口占用导致的错误。

打开浏览器访问http://localhost:3000即可看到输出Hello World!。

To Be Continued
下一期将介绍Controller,欢迎持续关注!

©著作权归作者所有:来自51CTO博客作者mob604756eccc76的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. flowable 工作流
  2. 不使用宏的情况 Multi-Stage Word 也可让用户中马
  3. 磁盘文件系统损坏怎么解决?
  4. 利用 r2 逆向分析框架分析 Windows Minidumps
  5. 阿里P8架构师分享私用Java学习资料(含视频和项目源码以及面试题)
  6. 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数
  7. 在MySQL中如何有效的删除一个大表?
  8. 【存储】裸设备和Oracle
  9. getExtension 获取文件名后缀

随机推荐

  1. 截击后的截击似乎不奏效。
  2. Android 网络框架学习之Retrofit
  3. 红茶一杯话Binder(传输机制篇_下)
  4. Linux(Android):如何禁用Intel DPST(显示节电
  5. 【原创】安卓程序员的大革命,Cocovr框架库
  6. Android开发中MinSDK与TargetSDK不在同一
  7. android项目 之 记事本(14) ----- 手势缩放
  8. 使用RecyclerView的AppBarLayout可以在不
  9. 更新后-崩溃com.google.android.gms:play
  10. Android 进阶:Fragment 源码深入理解