NestJS 框架實戰指南|無痛打造易維護的後端應用

    有效解決型別與架構兩大痛點,​並善用 NestJS 的優勢,打造易維護的 Node.js 後端應用!​

    127
    5.0
    • 如何在 NestJS 串接熱門 NoSQL 資料庫 - MongoDB

    • 驗證與授權機制

    • 9 大元件功能介紹:控制器、模組、Provider、攔截器等​

    • 6 種實用功能介紹:Configuration、File Upload、HTTP Module 等​

    • 4 種進階功能與深入原理:依賴注入的作用域、生命週期與事件、手動處理依賴注入等​

    US$62.60

    按一下 進入設定

    00:00
    00:00
    00:00

    當你有這些困難,NestJS 將會是你的利器

    # 善用 NestJS 的優勢,你將可以打造「易維護」的後端應用


    身為後端工程師的你,是否有遇過這些困擾?別擔心,NestJS 都能幫你解決難題


    困擾 1:當多人開發時,容易在架構規劃上遇到難題


    💡解法:NestJS 中,各個元件都有各自的功用,只要熟悉這些元件的定位,就可以很有效分離程式碼的職責,再搭配 NestCLI,連檔案名稱都有制式化的規範,如此一來便可以輕鬆解決多人開發在架構上的常見問題



    困擾 2:某些功能需要透過第三方套件來加速開發,但找套件要花許多時間


    💡解法:NestJS 生態系中,整合了非常多熱門的第三方套件,省去了很多套件選擇的時間



    困擾 3:環境建置花費大量時間成本


    💡解法:雖然 NestJS 不是唯一一個可以使用 TypeScript 開發的框架,但它將 TypeScript 作為預設語言,相較於比較知名的 Express 等框架而言,在環境建置上更為方便



    NestJS 是什麼? 6 分鐘讓你快速了解好用的 Node.js 框架

    # 帶你有效解決型別與架構兩大痛點


    NestJS 是一套使用 TypeScript 的框架,採用模組化設計,將每種功能打包成獨立模組,且設計許多抽象層來將各個不同職責的程式碼片段抽成各式元件,具有高度的解耦合與擴展性。NestJS 更運用了大量的設計模式,讓整體開發的架構十分有效率且清晰。




    善用 NestJS 優勢,打造易維護、嚴謹、易擴展的後端應用

    根據官方資料列出, Adidas、Decathlon 法國大型連鎖運動用品量販店、Shopback 現金回饋網、Autodesk 專業設計軟體等公司都使用 NestJS 來進行開發。NestJS 是近年來受歡迎的後端框架之一,架構嚴謹、易擴展,擁有自給自足的程式模組,變更其一組件後的影響力低,是一套整合度很高的框架。他還有著以下優勢:

    • 利用 TypeScript 強型別語言,它是 JavaScript 的一個超集合
    • 擁有大量的設計模式
    • 強大的命令列介面(CLI)工具,可以提高生產力和簡化開發
    •  使用由 Facebook 團隊製作的 Jest 作為單元測試框架,執行快速且容易上手


    第一步:先打穩基礎,了解 9 大基本元件



    控制器(Controller):是一個負責制定路由與處理來自客戶端請求的元件,透過一些技巧可以輕鬆從 Controller 中提取來自客戶端提供的資料,進而針對這些資料做處理。

    ② 模組(Module):在 NestJS 是非常重要的角色,特別是有很核心的機制與 Provider 息息相關。主要是把相同性質的功能包裝在一起,並依照各模組的需求來串接。善用功能模組、共享模組、全域模組、常用模組的概念,可以讓模組化的功效最佳化。

    ③ 邏輯處理(Provider):Provider 的意思就是提供者,從一個 class 到一個值都可以被當作 Provider,關鍵點在於有沒有被 NestJS 的依賴注入機制做管理,這與 Module 有著密不可分的關係,運用 Provider 的好處就是能夠大幅降低耦合度、作用域分明且有效針對這些 Provider 做管理,甚至可以自訂 Provider 建立的方式,讓 Provider 有更大的彈性。

    ④ 錯誤處理器(Exception & Exception filter):在 NestJS 裡有一套機制去捕捉所有的錯誤,進行錯誤處理,當錯誤發生的時候,可以讓客戶端清楚了解錯誤發生。如果想要完全掌握錯誤處理的機制,NestJS 也能夠讓開發者自行設計 Exception filter 去捕捉錯誤,進而針對錯誤情況做更合適的處理。

    ⑤ 資料轉型與資料驗證(Pipe):​​ 常常在程式裡面寫很多判斷式或轉型來做資料驗證嗎?在 NestJS 裡可以透過 Pipe 元件將驗證邏輯、型別轉換等工作交給它,甚至可以運用一些技巧來大幅減少判斷邏輯來達成一樣的效果喔!

    ⑥ 中介層(Middleware):是一種執行於路由處理之前的函式,可以存取請求物件與回應物件,並透過 next() 繼續完成後續的流程。

    ⑦ 攔截器(Interceptor):透過 Interceptor 可以攔截來自客戶端的請求或是要回應給客戶端的資料,方便我們把一些操作在這部分做預處理,是很棒的擴展邏輯方式

    ⑧ 檢測機制(Guard):實作授權與身份驗證的好幫手,使用它可以確保客戶端的請求是有存取權的。

    ⑨ 自訂裝飾器(Custom Decorator):內建的 NestJS 裝飾器無法滿足需求嗎?透過自訂的方式,可以補內建裝飾器不足的部分,具有相當大的彈性,是非常實用的功能。可以運用不同定位的參數裝飾器、自訂 Metadata 裝飾器、整合裝飾器來簡化、實現流程。



    第二步:學會 4 種進階功能


    ① 依賴注入的作用域(Injection Scope):Nest 預設採用單例模式來維持各個實例,有時會透過改變注入作用域的範圍來改變實例的維護規則,分為以下三種作用域使用。




    ② 生命週期與事件(Lifecycle Hooks):在 Nest App 的生命週期中,共有五個 Lifecycle hooks 可以使用,主要是在「啟動」與「關閉」這兩個時間點觸發,讓開發者可以在特定的時間點去執行特定的操作。



    ③ 模組參照(Module Reference):它是一個名叫 ModuleRef 的 class,可以對內部 Provider 做存取,可以說是該 Module 的 Provider 管理器,透過深入理解 Module Reference 可以對 NestJS 的依賴注入機制有更近一步的了解。

    ④ 動態模組(Dynamic Module):透過模組參數化的方式,讓模組的運用更加靈活,經常運用在資料庫、環境變數管理等功能。



    第三步:不藏私!五大實用功能報你知,幫助你有效提升開發效率

    • Configuration :不可不知的環境變數處理,避免把敏感資訊都放在程式碼裡面,透過 NestJS 封裝的 ConfigModule 進行管理,讓環境變數的存取更加優雅!

    • File Upload :NestJS 封裝了熱門的 Multer 套件,透過簡單的 Interceptor 與裝飾器的運用,就可以輕鬆實現檔案上傳,也讓檔案上傳的實作可以更貼近 Nest 的開發風格!
    • HTTP Module :在串接第三方 API 時,會需要向第三方發送 HTTP Request,NestJS 封裝了熱門的 Axios 套件,讓 NestJS 開發人員可以用更 Nest 的開發風格來使用 Axios!
    • Event NestJS 封裝了 eventemitter2,透過它可以更簡單實現觀察者模式,單一事件可以有多個訂閱者,如:當訂單成立後應該要觸發哪些事情等。
    • CORS :在前後端分離的時代,要做到跨域存取就必須要遵守同源政策,那就必須針對 CORS 進行配置,而 NestJS 封裝並內建 cors 套件,不需另外再安裝套件!


    第四步:善用 API 的視覺魔法師-Swagger,大幅降低前後端溝通成本

    如果你是一名前端工程師,那麼你應該會有跟後端要 API 文件的經驗,如果你是一名後端工程師,那你應該會有寫 API 文件的需求,相信很多人都不喜歡花時間在寫文件,甚至要為每個版本做維護,實在是耗時耗力,難道就沒有其他方法來解決這個問題嗎?答案是有的,解決方案就是非常知名的 Swagger。它有著以下的優勢:

    • 視覺化方式呈現的工具
    • 套用方法簡單、容易維護
    • 大幅降低 API 文件的維護成本
    • 大幅減少撰寫文件的時間
    • 增進前後端的開發效率


    第五步:從環境建置到運用,手把手帶你活用 NestJS 實作 To do list 

    •  環境建置 :實作前準備,包含環境建置、系統規劃。
    •  Schema 設計 :在設計 API 前,我們先把要存入 MongoDB 的資料設計好 Schema,好讓我們之後可以使用 Model 來操作資料庫,以這次要設計的系統來說,共需要設計兩個 Schema,分別為:user 與 todo。
    •  帳戶功能設計 :運用 passport 實作出帳戶登入與註冊的功能,並透過 Casbin 實作 RBAC 的授權機制。
    •  API 設計 :針對我們的 TodoList 的功能實作出易維護的 RESTful API。
    •  套用 Swagger :在 API 設計完以後,會針對各個 API 套用 Swagger,如此一來,便可以透過 Swagger 來看 API 所需的參數格式,甚至可以直接在 Swagger 上測試 API。

    章節目錄

    • 1-1
      為什麼選擇 NestJS?
    • 1-2
      初探 NestJS

    試閱影片

    常見問答

    如果您購買的是募資課程,請在課程的【簡介】中查看開課時間,募資課程將於開課時間所述日期開放同學上課。

     

    若您購買的是一般課程(開放上課課程),則在購買完成後可以立即開始觀看。

     

    所有線上課程皆不受時間限制,享無限次永久觀看!

    猜你喜歡

    購買前問答

    劉凱銘
    劉凱銘

    hi 老師好,
    上這門課程的前提條件是否有須要先熟悉Node.JS

    HAO
    HAO

    你好,我會建議至少先具備 Node.js、JavaScript/TypeScript 的基本知識,對 Node.js 的了解程度至少要知道如何啟動、透過 npm 安裝套件等,因為這堂課是針對 NestJS 本身,並沒有包含 Node.js、JavaScript 或是 TypeScript 的教學,如果沒有接觸過 Node.js 的話,不妨先用用看,覺得好用、生態圈完善的話,再來考慮要不要進一步學習 NestJS 呦,有任何問題都歡迎提問~

     

    如果想要入坑 Node.js 的話,可以參考這些資源:

    Node.js 官方網站

    Node.js Version Manager - 建議使用

    MDN - Express 框架與 Node.js

    劉凱銘
    劉凱銘

    好的,感謝老師回覆:)

    銷售方案