天天看點

【01】nest.js初識-項目初始化

記錄學習 nest.js 開發的過程

示範環境

Windows 10 、mysql v8.0.12、Redis3 v.2.100、node v14.16.1、npm v6.14.12、nestjs v8.1.1

連結

  1. node 下載下傳安裝位址 直接下載下傳穩定版
  2. nest.js 中文文檔位址 文檔參考

Nest CLI 安裝

建立項目

運作以下指令建立 nest 項目 nest-admin-server-template 為項目名

nest new nest-admin-server-template
           

Which package manager would you ❤️ to use?

此處我們選擇自己喜歡的包管理器就好了,本文選擇 yarn。

目錄結構

此時 src 生成以下檔案,

app.controller.ts 帶有單個路由的基本控制器。
app.controller.spec.ts 針對控制器的單元測試
app.module.ts 應用程式的根子產品
app.service.ts 具有單一方法的基本服務(service)。
main.ts 應用程式的入口檔案

運作

根目錄下運作以下指令用于本地開發調試,将 watch 檔案變化自動重新開機服務

yarn run start:dev
           

此時通路

http://localhost:3000/

可以看到 Hello World!

檔案用途

可以簡單的了解為

controller 負責路由,處理傳入的請求,并傳回相關響應

service 具體的業務處理

module 将各個子產品組織在一起

新增一個路由

app.controller.ts

import { Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
  // 一個get請求  路徑test
  @Get('test')
  testHello(): string {
    return 'test hello';
  }
  //一個post 請求,路徑test
  @Post('test')
  testPost(): string {
    return this.appService.getPost();
  }
}
           

app.service.ts

import { Injectable } from "@nestjs/common";

@Injectable()
export class AppService {
  getHello(): string {
    return "Hello World!";
  }
  getPost(): string {
    return "getPost!";
  }
}
           

get 請求

http://localhost:3000/test

傳回 test hello

post 請求

http://localhost:3000/test

傳回 getPost!

以上我們可以看到 nest 部分路由的能力,其中控制器,Module 中 imports、controllers、providers 可以詳見官方文檔。

但我覺得,如果有一定的前端開發經驗,特别是 angular 開發經驗,畢竟 nest.js 的架構深受 Angular 的啟發,可以在實踐中逐漸了解,而不必拘泥在文檔。

nest 強烈推薦使用子產品作為組織元件的有效方式。是以,我們不可能所有的路由、業務邏輯等等都在根子產品下完成。

對于大多數應用程式而言将采用多個子產品,每個子產品封裝一組密切相關的功能。在後面我們将展現這一點。

建立檔案

使用 nest-cli 提供的指令可以快速建立檔案,文法如下:

nest g [檔案類型] [檔案名] [檔案目錄(src目錄下)]

# 常用指令 --no-spec不要測試用例檔案
nest g module/mo user logical --no-spec
nest g service/s user logical
nest g controller/co user logical
           

為了簡單示範,測試用例暫不在考慮範圍内,是以不會生成測試檔案

下一篇,為了友善多人協作,以及資料庫配置等,我們将進行多環境的常量配置

繼續閱讀