久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      深入淺析node中的Nest.js框架

      本篇文章帶大家認(rèn)識(shí)一下node中的Nest.js框架,聊聊為什么選擇 Nest,創(chuàng)建和運(yùn)行項(xiàng)目、不同方式接收請(qǐng)求的方法,希望對(duì)大家有所幫助!

      深入淺析node中的Nest.js框架

      最近在考慮和小伙伴做一個(gè)todolist平臺(tái)給自己用,很久之前學(xué)習(xí)過(guò) express ,想著與時(shí)俱進(jìn)一下,看看近期熱度較高的幾個(gè)框架是怎樣的。在幾個(gè)對(duì)比下選擇了 nest 在初步使用后記錄一下,方便日后查閱。

      貼出中文文檔以便大家進(jìn)一步學(xué)習(xí) Nest

      Nest.js框架簡(jiǎn)介

      • Nest 是一個(gè)用于構(gòu)建高效,可擴(kuò)展的 Node.js 服務(wù)器端應(yīng)用程序的框架。它使用漸進(jìn)式 JavaScript,內(nèi)置并完全支持 TypeScript(但仍然允許開(kāi)發(fā)人員使用純 JavaScript 編寫(xiě)代碼)并結(jié)合了 OOP(面向?qū)ο缶幊蹋現(xiàn)P(函數(shù)式編程)和 FRP(函數(shù)式響應(yīng)編程)的元素。
      • Nest 框架底層 HTTP 平臺(tái)默認(rèn)是基于 Express 實(shí)現(xiàn)的,所以無(wú)需擔(dān)心第三方庫(kù)的缺失。 Nest 旨在成為一個(gè)與平臺(tái)無(wú)關(guān)的框架。 通過(guò)平臺(tái),可以創(chuàng)建可重用的邏輯部件,開(kāi)發(fā)人員可以利用這些部件來(lái)跨越多種不同類(lèi)型的應(yīng)用程序。 nest 目前有兩個(gè)支持開(kāi)箱即用的 HTTP 平臺(tái):express 和 fastify 可以在項(xiàng)目中直接引入。

      為什么選擇 Nest

      • 目前市面上有很多 node 框架可供大家選擇。
      • Express.js 是 Node.JS 誕生之初,是一款基于Node.js以及Chrome V8引擎,快速、極簡(jiǎn)的JS服務(wù)端開(kāi)發(fā)框架。
      • Koa.js是一款微型Web框架,寫(xiě)一個(gè)hello world很簡(jiǎn)單,但web應(yīng)用離不開(kāi)session,視圖模板,路由,文件上傳,日志管理。這些 Koa 都不提供,需要自行去官方的 Middleware 尋找。然而,100個(gè)人可能找出100種搭配。
      • Egg.js是基于Koa.js,解決了上述問(wèn)題,將社區(qū)最佳實(shí)踐整合進(jìn)了Koa.js,另取名叫Egg.js,并且將多進(jìn)程啟動(dòng),開(kāi)發(fā)時(shí)的熱更新等問(wèn)題一并解決了。這對(duì)開(kāi)發(fā)者很友好,開(kāi)箱即用,開(kāi)箱即是最(較)佳配置。Egg.js發(fā)展期間,ECMAScript又推出了 async await,相比yield的語(yǔ)法async寫(xiě)起來(lái)更直。后面Koa.js也同步進(jìn)行了跟進(jìn)。
      • Midway 是阿里團(tuán)隊(duì),基于漸進(jìn)式理念研發(fā)的 Node.js 框架,結(jié)合了 OOP和函數(shù)式兩種編程范式。以 egg 是作為底層框架,加上了良好的TypeScript的定義支持等眾多新特性,推出了Midway,有興趣的小伙伴可以去官方文檔學(xué)習(xí)一下
      • Nest.js 基于Express.js的全功能框架 Nest.js,他是在Express.js上封裝的,充分利用了TypeScript的特性;Nest.js的優(yōu)點(diǎn)是社區(qū)活躍,漲勢(shì)喜人,截止目前在 GitHub 擁有 43.7k Star 是近期比較熱門(mén)的企業(yè)級(jí)框架。
      • 基于支持底層支持ts與企業(yè)級(jí)和社區(qū)活躍度等綜合考慮,這里我選擇用nest來(lái)進(jìn)行學(xué)習(xí)。各位同學(xué)可以按需選擇。

      創(chuàng)建項(xiàng)目

      • 確保電腦安裝了 Node.js (>= 10.13.0)

      • 這里我使用的 node 版本為 v14.16.1 包用的是 yarn 管理的 版本為 1.22.17

      創(chuàng)建項(xiàng)目

      • $  npm i -g @nestjs/cli $  nest new project-name
      • 創(chuàng)建好項(xiàng)目后看一下項(xiàng)目目錄,以下是核心文件的簡(jiǎn)單描述:

      • app.controller.ts 帶有單個(gè)路由的基本控制器示例
        app.controller.spec.ts 對(duì)于基本控制器的單元測(cè)試樣例
        app.module.ts 應(yīng)用程序的根模塊。
        app.service.ts 帶有單個(gè)方法的基本服務(wù)
        main.ts 應(yīng)用程序入口文件。用來(lái)創(chuàng)建 Nest 應(yīng)用實(shí)例。
        /* main.ts */ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module';  async function bootstrap() {   const app = await NestFactory.create(AppModule); // 使用核心類(lèi) NestFactory 返回一個(gè) 接口對(duì)象   await app.listen(3000);  // 這里是默認(rèn)設(shè)置的端口號(hào) } bootstrap();

      運(yùn)行項(xiàng)目

      • $ npm run start:watch // 啟動(dòng)項(xiàng)目并監(jiān)聽(tīng)代碼變動(dòng) 這里可以在package.json 中進(jìn)行配置指令

      深入淺析node中的Nest.js框架

      •   我們可以看到服務(wù)已經(jīng)啟動(dòng),輸入本機(jī)地址并帶上端口號(hào)3000,發(fā)送一次 get 請(qǐng)求 則會(huì)返回 `Hello World`。       這里是因?yàn)樵?app.controll.ts 文件中 @Get()HTTP請(qǐng)求裝飾器告訴Nest為HTTP請(qǐng)求的特定端點(diǎn)創(chuàng)建處理程序。

      路由

      • 在開(kāi)始寫(xiě)代碼之前我們先簡(jiǎn)單看一下nest中的基礎(chǔ)路由配置是怎樣的,就目前而言我的理解為nest的路由是由 全局路由 路由前綴(局部路由) 方法裝飾器 組成路由映射提供給前端使用。

      •  /* main.ts */  main文件中我們可以在項(xiàng)目監(jiān)聽(tīng)前配置一個(gè)全局的api前綴 async function bootstrap() { const app = await NestFactory.create(AppModule);     //設(shè)置全局前綴     app.setGlobalPrefix('api');     await app.listen(3000);   } /* app.controller.ts */ @Controller('user') // 控制器設(shè)置路由前綴 我理解為局部路由   export class AppController {     constructor(private readonly appService: AppService) {}     @Get('find') // 方法裝飾器設(shè)置路由路徑 這里我理解為設(shè)置api子路由     getHello(): string {       return this.appService.getHello();         }     }
      • 以上方法在api中映射成完整的路由為GET api/user/find 。

      • 其中 @Get()HTTP請(qǐng)求裝飾器告訴Nest為HTTP請(qǐng)求的特定端點(diǎn)創(chuàng)建處理程序。

      深入淺析node中的Nest.js框架

      • 可以看到上面的 get 接收請(qǐng)求及路由以可以使用,下面我們看一下 nest 中如何接收 post 等其他請(qǐng)求方式

      不同方式接收請(qǐng)求

      • 這里用到的 Nest 提供的請(qǐng)求裝飾器知識(shí)點(diǎn)Request 對(duì)象代表 HTTP 請(qǐng)求,并具有查詢字符串,請(qǐng)求參數(shù)參數(shù),HTTP 標(biāo)頭(HTTP header) 和 正文(HTTP body)的屬性(在這里閱讀

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)