Nest.js你學不會系列-初識Nest


前言

最近在學習研究 Nest 框架,但是在學習過程中除了參考翻閱官方文檔外國內幾乎沒有多少資料能系統的講解 Nest 的相關內容,所以打算想通過我自己學習的角度講解下 Nest 框架,不知道能堅持多久,也可能有錯誤或遺漏的地方,歡迎大家批評指正。

下面我學習 Nest 的主要信息來源,在編寫過程中還會有其他途徑獲取的信息會在文末給出:

什么是 Nest

Nest 是一個用於構建高效,可擴展的 Node.js 服務器端應用程序的框架。它使用漸進式 JavaScript,內置並完全支持 TypeScript(但仍然允許開發人員使用純 JavaScript 編寫代碼)並結合了 OOP(面向對象編程),FP(函數式編程)和 FRP(函數式響應編程)的元素。

Nest 框架底層 HTTP 平台默認是基於 Express 實現的,所以無需擔心第三方庫的缺失。 Nest 旨在成為一個與平台無關的框架。 通過平台,可以創建可重用的邏輯部件,開發人員可以利用這些部件來跨越多種不同類型的應用程序。 從技術上講,Nest 可以在創建適配器 后使用任何 Node HTTP 框架。 有兩個支持開箱即用的 HTTP 平台:express 和 fastify。

Nest 提供了一個開箱即用的應用程序架構,允許開發人員和團隊創建高度可測試,可擴展,松散耦合且易於維護的應用程序。

在利用 NestJs 框架中,開發者可以體驗到 NestJs 清晰的模塊組織方式,隔離應用的各個工作區間;在各種工作區間都涉及不一樣的設計模式,比如面向對象的SOLID原則在整個應用構建中的體現,AOP、DI、IoC 等在各個核心部件中的應用,OOP、FP、FRP 在各模塊編碼中的完美結合,都給開發中帶來不一樣的體驗。

Nest 的特性

  • 依賴注入容器
  • 模塊化封裝
  • 可測試性
  • 內置支持 TypeScript
  • 可基於 Express 或者 fastify

什么情況下使用 Nest

如果是一個簡單的應用,其實用什么框架都無所謂,一個框架用 100 行代碼實現,另一個用 80 行,區別不大。但涉及到企業級的應用,分分鍾有上萬行的代碼,代碼的組織結構就變得很重要了。如果代碼拆分不合理,一個 JS 文件就有上千行的代碼,后期的維護成本會非常的高。再考慮到復雜項目參與者眾多,沒有一個規范去約束的話,每個人寫出來的代碼風格迥異,協作起來會很難受。上文提到的幾個框架對項目代碼的架構要么是沒約束,要么就是約束比較弱或者看起來很別扭。相比之下Nest的實現就很簡潔,用起來很順手。

安裝

在安裝前請確保您的操作系統上安裝了 Node.js(> = 8.9.0)。

  • 使用 CLI
  $ npm i -g @nestjs/cli
  $ nest new project-name
  • 使用 git
  $ git clone https://github.com/nestjs/typescript-starter.git project
  $ cd project
  $ npm install
  $ npm run start
  • 手動創建
  $ npm i --save @nestjs/core @nestjs/common rxjs reflect-metadata

運行

  $ nest start

然后我們訪問 http://localhost:3000 就可以看到 Hello World! 了。

從上面的命令行中可以看出來整個項目是用 ts-node 跑起來的,這樣的目的就是在開發環境節去了編譯 .ts 的過程(實際上是 ts-node 在背后做了這個事情)。和其他 ts-node 項目不同的是,大多數 ts-node 運行在內存中,但是我們通過項目目錄發現在 start 時會產生一個 dist 目錄,哪怕是在開發環境其實我們訪問的也是 dist 文件中的內容, 我們可以通過修改 tsconfig.json 中的 outDir 來修改輸出的目錄地址。

如果想要 watch 文件的修改建議使用 npm run start:dev 啟動項目。

好了,今天這節就講到這里,后續我們會針對 AOP、DI、IoC、OOP、FP、FRP 以及依賴注入容器和模塊化封裝等名稱作單獨的解釋。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM