在這組文章中,您將學(xué)習(xí) Nest的 “核心基礎(chǔ)知識”。為了讓您熟悉 Nest 應(yīng)用程序的基本構(gòu)建模塊,我們將構(gòu)建一個基本的 CRUD 應(yīng)用程序,其涵蓋了入門級別的很多功能。
我們愛上了 TypeScript,但是最重的是 - 我們熱愛 Node.js。這就是為什么 Nest 同時兼容 TypeScript 和 純 JavaScript 的原因。由于 Nest 利用了編程語言的最新功能,因此,要將其與原始的 JavaScript 一起使用,我們需要 Babel 編譯器的協(xié)助。
我們將在提供的示例中主要使用 TypeScript,但您隨時可以 將代碼段切換為 純 JavaScript 語法(只需單擊每個代碼片段右上角的語言切換按鈕即可)。
請確保在您的操作系統(tǒng)上安裝了 Node.js (>= 10.13.0,v13 除外)。
使用 Nest CLI 創(chuàng)建一個新項(xiàng)目非常簡單。如果已經(jīng)安裝了 npm,您可以在操作系統(tǒng)終端(或命令行)中使用以下命令創(chuàng)建一個新的 Nest 項(xiàng)目:
$ npm i -g @nestjs/cli
$ nest new project-name
將創(chuàng)建 project 木、安裝 node 模塊和其它一些模板文件,同時還將創(chuàng)建 src/ 目錄,并填充幾個核心文件。
src
app.controller.ts
app.controller.spec.ts
app.module.ts
app.service.ts
main.ts
以下是這些核心文件的簡要概述:
app.controller.ts | 帶有單個路由的基本控制器。 |
app.controller.spec.ts | 針對控制器的單元測試。 |
app.module.ts | T應(yīng)用程序的根模塊(root module)。 |
app.service.ts | 具有單一方法的基本服務(wù)(service)。 method. |
main.ts | 應(yīng)用程序的入口文件,它使用核心函數(shù) NestFactory 來創(chuàng)建 Nest 應(yīng)用程序的實(shí)例。 |
main.ts 文件中包含了一個異步函數(shù),此函數(shù)將 引導(dǎo)(bootstrap) 應(yīng)用程序的啟動過程:
@@filename(main)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
@@switch
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
要創(chuàng)建一個 Nest 應(yīng)用程序的實(shí)例,我們使用了 NestFactory 核心類。NestFactory 暴露了一些靜態(tài)方法用于創(chuàng)建應(yīng)用程序的實(shí)例。其中,create() 方法返回一個應(yīng)用程序的對象,該對象實(shí)現(xiàn)了 INestApplication 接口。該對象還提供了一組方法,這些方法將在接下來的章節(jié)中進(jìn)行介紹。在上面的 main.ts 示例中,我們僅啟動了 HTTP 偵聽器,該偵聽器使應(yīng)用程序可以偵聽入棧的 HTTP 請求。
請注意,使用 Nest CLI 創(chuàng)建的項(xiàng)目會擁有一個初始的項(xiàng)目結(jié)構(gòu),以鼓勵開發(fā)人員將每個模塊保存在其專用目錄中。
Nest 的目標(biāo)是成為一個與平臺無關(guān)的框架。平臺獨(dú)立性使創(chuàng)建可重用的邏輯部分成為可能,開發(fā)人員可以在多種不同類型的應(yīng)用程序中利用這些邏輯部分。 從技術(shù)上講,一旦創(chuàng)建了適配器,Nest 便可以使用任何 Node HTTP 框架。 目前支持兩個 HTTP 平臺:express 和 fastify。 您可以根據(jù)您的需求選擇最適合平臺。
platform-express | Express 是一個著名的、極簡的、專為 node 開發(fā)的 web 框架。它久經(jīng)考驗(yàn)、適用于生產(chǎn)環(huán)境的軟件庫,并且擁有大量的社區(qū)資源。默認(rèn)情況下使用 @nestjs/platform-express 軟件包。許多用戶對 Express 都很滿意,并且無需采取任何操作即可啟用它。 |
platform-fastify | Fastify 是一個高性能且低開銷的框架,高度專注于提供最高的效率和速度。點(diǎn)擊 這里 查看它的使用文檔。 |
無論使用那個平臺,都會將平臺的 application 接口暴露出來。它們分別是 NestExpressApplication 和 NestFastifyApplication。
當(dāng)您將類型信息傳遞給 NestFactory.create() 方法時,如下例所示,app 對象將具有該特定平臺的專用方法。但是請注意,除非 您確實(shí)需要訪問底層平臺的 API,否則 無需 指定平臺類型。
const app = await NestFactory.create<NestExpressApplication>(AppModule);
安裝過程完成后,您可以在操作系統(tǒng)的命令提示符下運(yùn)行以下命令,以啟動應(yīng)用程序以偵聽進(jìn)入的 HTTP 請求:
$ npm run start
此命令將使用 HTTP 服務(wù)器啟動應(yīng)用程序,以偵聽 src/main.ts 文件中所定義的端口。應(yīng)用程序運(yùn)行后,打開瀏覽器并訪問 http://localhost:3000/ 地址,您將看到類似 Hello World! 的信息。
更多建議: