W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
默認(rèn)情況下,Nest 使用 Express 框架。 如前所述,Nest 還提供與其他庫(kù)的兼容性,例如 Fastify。 Nest 通過實(shí)現(xiàn)一個(gè)框架適配器來(lái)實(shí)現(xiàn)這種框架獨(dú)立性,該適配器的主要功能是將中間件和處理程序代理到適當(dāng)?shù)膸?kù)特定實(shí)現(xiàn)。
請(qǐng)注意,為了實(shí)現(xiàn)框架適配器,目標(biāo)庫(kù)必須提供與 Express 中類似的請(qǐng)求/響應(yīng)管道處理。
Fastify 為 Nest 提供了一個(gè)很好的替代框架,因?yàn)樗耘c Express 類似的方式解決設(shè)計(jì)問題。 然而,fastify 比 Express 快得多,取得了幾乎兩倍的基準(zhǔn)測(cè)試結(jié)果。 一個(gè)公平的問題是為什么 Nest 使用 Express 作為默認(rèn)的 HTTP 提供程序? 原因是 Express 被廣泛使用、廣為人知,并且擁有大量兼容的中間件,這些中間件可供 Nest 用戶開箱即用。
但是由于 Nest 提供了框架獨(dú)立性,我們可以輕松地在它們之間進(jìn)行遷移。 當(dāng)我們高度重視非??斓男阅軙r(shí),F(xiàn)astify 可能是一個(gè)更好的選擇。 要使用 Fastify,只需選擇本章所示的內(nèi)置 FastifyAdapter。
首先,我們需要安裝所需的包:
$ npm i --save @nestjs/platform-fastify
一旦安裝了 Fastify 平臺(tái),我們就可以使用 FastifyAdapter。
import { NestFactory } from '@nestjs/core';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter()
);
await app.listen(3000);
}
bootstrap();
默認(rèn)情況下,F(xiàn)astify 只監(jiān)聽 localhost 127.0.0.1 接口。 如果要接受其他主機(jī)上的連接,則應(yīng)在 listen() 調(diào)用中指定“0.0.0.0”:
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter(),
);
await app.listen(3000, '0.0.0.0');
}
請(qǐng)記住,當(dāng)我們使用 FastifyAdapter 時(shí),Nest 使用 Fastify 作為 HTTP 提供程序。 這意味著依賴 Express 的每個(gè)配方可能不再有效。 相反,你應(yīng)該使用 Fastify 等效的包。
Fastify 處理重定向響應(yīng)的方式與 Express 略有不同。 要使用 Fastify 進(jìn)行正確的重定向,請(qǐng)返回狀態(tài)碼和 URL,如下所示:
@Get()
index(@Res() res) {
res.status(302).redirect('/login');
}
我們可以通過 FastifyAdapter 構(gòu)造函數(shù)將選項(xiàng)傳遞給 Fastify 構(gòu)造函數(shù)。 例如:
new FastifyAdapter({ logger: true });
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: