NestJs學習之旅(1)——快速開始

通過NodeJs系列課程Typescript系列課程,終於開始了激動人心的NestJs學習之旅。javascript

歡迎持續關注NestJs之旅系列文章
二維碼html

介紹

Nest(或NestJS)是一個用於構建高效,可擴展的Node.js服務器端應用程序的框架。它使用漸進式JavaScript,內置並徹底支持TypeScript(但仍然容許開發人員使用純JavaScript編寫代碼)並結合了OOP(面向對象編程),FP(功能編程)和FRP(功能反應編程)的元素。java

import { Controller, Get } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

熟悉Java的同窗應該有似曾相識的感受,SpringBoot中大量使用註解來簡化開發。如今,使用基於ES6裝飾器構建的NestJs框架,你也能夠作到!node

優缺點

先說說優勢吧:typescript

  • 完美支持Typescript,所以可使用日益繁榮的TS生態資源
  • 兼容express中間件,下降造輪子成本
  • 完美支持響應式編程框架rxjs
  • 完美支持依賴注入
  • 模塊化思想,方便開發以及後期維護
  • 使用裝飾器簡化開發,減小樣板代碼
  • 組件化設計,解決Node.js無全棧框架約束的現存問題

固然,"缺點"也是有點的,不過熟練以後這些都不是缺點:express

  • 基於TS致使的語言門檻
  • 代碼設計上對模塊化/組件化思想有必定要求

第一個NestJs應用

使用NestJs的命令行工具,能夠簡化項目的建立以及項目文件的建立。npm

  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有幾大類文件是主要的是下面幾種,其餘類型的文件在後續課程會講解;json

  • 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,歡迎持續關注!

相關文章
相關標籤/搜索