總結一下Nestjs核心部分
Controller,透過Nest.js把metadata映射到我們自定義的route,Nest.js本身也有提供很多裝飾器,而且是對應Express框架,讓我們可以更好上手,更容易了解Controller層,可以寫出很Express風格的Controller。
Component,Nest.js裏頭很多東西都是Component,如:Service,Repository,Factory,Helper...,再透過依賴注入的方式,將Component注入到其他地方使用。
Module,Module是Nest.js專案的根基,Nest.js可以寫出Module tree風格的專案,Component可以注入到Module,如此,該Module底下的Controller和Component就屬同作用域,然後就可以依賴注入使用該Component。
Middleware,用Express框架的朋友應該不陌生,這概念雷同,在程式處理請求前,我們可以做些事情,這就是Middleware的功用,但要記得要調用next(),不然程式會卡在那XD,導入Middleware的方式上跟Express略有不同,多注意一下就好。
Exception Filter,錯誤處理層其實還蠻常使用,統一格式回給Client端或進行錯誤Log處理,這都蠻重要。我們可以繼承HttpException,做一個客製化的HttpException回應給Client,也可以繼承ExceptionFilter,做更多的錯誤處理(如Log)。
Pipe,Pipe可以將input data轉換成我們想要的output data,它也可以扛下參數資料驗證工作,在參數資料不正確時拋HttpException出來,這個錯誤會被ExceptionsHandler或自定義的Exception Filter所捕捉。
Guard,Guard就是擔任路由警衛,決定程式在收到HTTP請求後,是否要執行 route handler。注意:客戶發動請求的流程為 Request->Middleware->Guard->Pipe->route handler。
Interceptor,我們可以透過Interceptor做些事情,像在請求前,完整記錄post過來的data,或在給予Client回應前,攔截一下,做些處理再返回,另外Interceptor 拋出的錯誤仍然可以被Exception Filter捕捉處理。
幾個夯夯的模組,也有被我玩過,大致了解如何透過Nest.js操作這些模組,希望哪天可以用Nest.js從外太空玩到內子宮XDDD,模組本身問題都不大,怎麼透過Nest.js實作比較好的串接模組方式問題比較大,都還是需要更多實作練習去掌握Nest.js。
嫩嫩的筆者我就不再多說什麼,我的github,有不少練習,雖不是優良好code,但至少都可以work哈哈,需要的朋友可以參考一下,我會繼續用這後端框架寫更多實作,後面的日子就要靠實作學習Nest.js,這框架算是Node.js裏頭比較全面的後端框架,大概跟F-22猛禽戰鬥機等級差不多吧XD