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! 資訊。

Tags: