Nest系列教程之入門篇
- 2019 年 11 月 6 日
- 筆記

Nest 用於構建高效且可擴展的伺服器端應用程式的漸進式 Node.js 框架,深受 Angular 的啟發。
Talk is cheap. Show me the code.
import { Injectable } from '@nestjs/common'; import { Cat } from './interfaces/cat.interface'; @Injectable() export class CatsService { private readonly cats: Cat[] = []; create(cat: Cat) { this.cats.push(cat); } findAll(): Cat[] { return this.cats; } }以上的程式碼對於 Angular 的小夥伴來說,是不是感覺很熟悉。除了程式碼層相似之外,系統模組架構也類似:

下面我們步入正題,邁出 Nest 大門的第一步。
Nest 簡介
Nest 是構建高效,可擴展的 Node.js Web 應用程式的框架。 它使用現代的 JavaScript 或 TypeScript(保留與純 JavaScript 的兼容性),並結合 OOP(面向對象編程),FP(函數式編程)和 FRP(函數響應式編程)的元素。
在底層,Nest 使用了 Express,但也提供了與其他各種庫的兼容,例如 Fastify,可以方便地使用各種可用的第三方插件。
Nest 設計哲學
近幾年,由於 Node.js,JavaScript 已經成為 Web 前端和後端應用程式的「通用語言」,從而產生了像Angular、React、Vue 等令人耳目一新的項目,這些項目提高了開發人員的生產力,使得可以快速構建可測試的且可擴展的前端應用程式。 然而,在伺服器端,雖然有很多優秀的庫、helper 和 Node 工具,但是它們都沒有有效地解決主要問題 - 架構。
Nest 旨在提供一個開箱即用的應用程式體系結構,允許輕鬆創建高度可測試,可擴展,鬆散耦合且易於維護的應用程式。
Nest 快速入門
環境搭建
與使用 Angular CLI 搭建 Angular 開發環境一樣,Nest 也為我們提供了 Nest CLI。對於新用戶來說,你可以在命令執行以下命令安裝 Nest CLI:
$ npm i -g @nestjs/cli
安裝完成後,我們繼續執行以下命令來新建項目:
$ nest new nest-quickstart
目錄結構
新建項目的目錄結構如下:
├── README.md ├── node_modules ├── nodemon-debug.json ├── nodemon.json ├── package-lock.json ├── package.json ├── src ├── test ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json └── webpack.config.js
其中 src 是源碼目錄,該目錄下有以下幾個核心文件:
├── app.controller.ts # 根控制器 ├── app.module.ts # 應用程式根模組 ├── app.service.ts # 根服務 └── main.ts # 應用程式入口文件
其中 main.ts 的程式碼如下,它負責引導我們的應用程式:
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap();bootstrap 方法是一個非同步函數,在該函數內部,通過調用 NestFactory.create 方法創建一個 Nest 應用實例,然後開始監聽 3000 埠。
啟動應用
在項目依賴安裝完成後,可以運行以下命令啟動應用:
$ npm run start
以上命令成功運行後,我們打開瀏覽器並訪問 http://localhost:3000/,這時你將在瀏覽器看到 Hello World! 資訊。