【Nest 極速指南】總結篇

Nest 作為一個漸進式的 Node.js 服務器端框架,它實現了類似于 Java Spring 的功能,可以說是填補了現在 JavaScript 在服務器端的企業級應用框架,再加上 TypeScript 的支持,它讓開發體驗得到進一步提高。官方給 Nest 特性:可擴展、可伸縮的漸進式服務器端應用程序框架。當然我們還不知道它的威力是否大過現在流行的服務端框架 Java Spring 或者 .NET 等,但是它給我們帶來的希望是 JavaScript 的全棧能力。

通過一段時間 Nest 的學習和簡單實踐,回過頭來總結一下,以便未來更好的運用。

先回顧相關文章:

Nest 的基本功能

Nest 基本功能已經提供了日常所需,但是在使用的時候,切記它的設計原則:AOP 的編程思想,大量使用依賴注入的方式。下面我們一一介紹:

  • Controller
  • Provider
  • Module
  • Middleware
  • ExceptionFilter
  • Pipe
  • Guard
  • Interceptor

Controller

Controller 負責處理傳入的請求,并返回相關響應。它內置的路由和獲取 HTTP 上下文相關模塊,讓我們很好的處理業務邏輯,并完成 RESTful 接口。當然,它要其效果,必須要注冊到模塊的 controllers 屬性中去。

Provider

幾乎所有的組件模塊都可以認為是 Provider:service, repository, factory, helper 等等。他們都可以通過構造函數 constructor 注入依賴關系。Provider 可以說是 Controller 的輔助模塊,它可以幫助你連接數據庫、獲取緩存數據、公共數據處理模塊等等。當然,他也需要注冊到模塊的 providers 屬性中去。

Module

Module 這個組件起到將各個模塊組織在一起的作用,Nest 應用程序也必須有一個 Module 模塊。

Middleware

Middleware 是一個在路由處理器之前被調用的函數,中間件函數可以訪問請求和響應對象,它可以作為對請求數據和返回數據的處理。

ExceptionFilter

ExceptionFilter 是解決異常處理的,需要實現 ExceptionFilter,然后通過 @UseFilters 來使用。

Pipe

Pipe 管道是用來做數據轉換的,另外它也可以處理數據的驗證,需要實現 PipeTransform,然后通過 @UsePipes 來使用。

Guard

Guard 守衛是來解決權限問題的,它可以針對某個請求來控制路由的可用不可用。需要實現 CanActivate,然后通過 @UseGuards 來使用。

Interceptor

Interceptor 攔截器,上面的 ExceptionFilter、Pipe、Guard 個人感覺是攔截器的特定場景的實現,當然還有很多不再這些業務場景的功能,那就需要攔截器來做了。同樣需要實現 NestInterceptor,然后通過 @UseInterceptors 來使用。

Nest 相關技術

Nest 還提供了和服務端相關的各種組件,例如 ORM、ES、Redis 等相關技術,來滿足日常開發:

  • TypeORM
  • Authentication
  • Caching
  • Serialization
  • Log
  • Security
  • Configuration
  • GraphQL
  • ...

TypeORM

TypeORM 絕對是 Node.js 中可用的最成熟的對象關系映射器 (ORM),我們只需要通過簡單的編寫,就能夠完成數據庫的相關操作。

Authentication

Authentication 這一塊 Nest 采用的是 Nodejs 最流行的庫 passport,他可以幫你很容易的解決權限相關問題。

Caching

Nest 也提供了豐富的緩存方式:內存緩存、Redis、自定義緩存等等。

Serialization

Nest 附帶了這個 ClassSerializerInterceptor 類。它使用類轉換器來提供轉換對象的聲明性和可擴展方式。

Log

日志記錄是服務端應用不可獲取的功能,Nest 提供了內置的日志系統,當然也可以采用用戶自己提供的。

Security

安全這一塊,Nest 提供了 Helmet、CORS、CSRF、限速等功能。

Configuration

針對不同環境的運行 Nest 提供了 ConfigModule 來解決這一問題,不過個人還是覺得不要使用它自帶的,自己來寫就行了。

GraphQL

當今前端流行的 GraphQL,它當然支持,只需要簡單的引入相關模塊就可以了。

寫在最后

Nest 的確是一個 Nodejs 服務器端應用的一個完善的框架,它提供了強大的工具讓我們完成一個后端 API 的相關功能,從路由到權限、從數據庫到緩存、從日志到安全,甚至是比較流行的搜索、GraphQL、微服務等功能它也提供給我們。個人感覺,它是現階段 Nodejs 相對完善的、可以作為企業級開發的框架。

當然 Nodejs 的服務端應用,相比起 Java、.NET、Pathy 這些經典框架來說,還有很多不足之處,當然這些經典框架都有大廠和廣大社區的大力支持和發展。但是 JavaScript 這種跨端而生的語言來說,Nest 是一個新的開端,它告訴我們 JavaScript 不僅可以作為 Web 端 App 端的開發語言,也能夠很好的應付服務器端復雜的業務。期待它變得更好更強大。

〖堅持的一俢〗

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374