iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
Modern Web

NestJS 帶你飛!系列 第 1

[NestJS 帶你飛!] DAY01 - 簡介

近年來,前後端都可以看到 JavaScript 的蹤影,Node.js 的誕生讓 JavaScript 變得非常熱門,在 Node.js 生態圈中,主流的後端框架不外乎就是 ExpressKoa,這些框架非常 自由輕量,能夠快速建立應用,因此非常受歡迎。

由於這些框架非常自由,所以 沒有嚴謹的架構規範,非常容易寫出 高耦合低內聚 的程式碼,甚至 檔案結構非常鬆散,使用這些主流框架的開發者如果沒有訂定一套規範,將會面臨許多挑戰。

後來出現了一套名為 NestJS 的框架,它受到前端框架 Angular 的啟發,運用大量的 設計模式架構規範,再搭配強型別的 TypeScript,提供開發人員 嚴謹易擴展鬆耦合 的開發環境。

關於 NestJS

NestJS
圖片來源

NestJS 採用模組化設計,將每種功能打包成獨立模組,且設計許多抽象層來將各個不同職責的程式碼片段抽成 各式元件,具有高度的解耦合與擴展性。NestJS 可以選擇使用 Express 或 Fastify 作為底層基礎,來打造 MVC 或 REST API 的應用,並將各種熱門套件進行整合,如:TypeORM、mongoose、passport 等,甚至還可以實作時下非常流行的微服務 (Microservice),可說是一套整合度很高的框架。

NestJS 結合了三種程式設計的概念:

  • 物件導向程式設計 (Object Oriented Programming)
  • 函式程式設計 (Functional Programming)
  • 函式反應式程式設計 (Functional Reactive Programming)

從這些概念中提取精華,再搭配設計模式,使 NestJS 的整體架構十分清晰且嚴謹。

關於本系列文

以往 Node.js 作為後端應用最被詬病的不外乎就是 型別問題架構問題,NestJS 正是解決這兩大問題的最佳選擇,然而在臺灣 NestJS 的熱度相對來說並沒有那麼高且繁體中文的教學也是相對稀少的,為了促進 NestJS 在臺灣的發展,我決定寫這個系列文來推坑各位這款強大的 Node.js 後端框架,事實上,我在去年的系列文就已經埋下了今年系列文的伏筆。本系列文會以 REST API 的方向來撰寫,具體規劃如下:

  1. NestJS 基本功能:約 10 ~ 15 篇,會針對 NestJS 各個基本元件做介紹,簡單了解各元件的作用與使用方式。
  2. NestJS 進階功能:約 3 ~ 5 篇,這階段會講解一些難度較高的原理與功能,讓基本功更上一層樓。
  3. NestJS 多元化功能:約 5 ~ 8 篇,擁有穩固的基本功後,就可以來探索一些在開發上常用的功能。
  4. NestJS 開發實戰:約 3 ~ 5 篇,學習完以上的內容,就可以透過實戰開發來體會 NestJS 的奧妙。

另外,在文章中可能會有一些規則需要先了解:

  1. 終端機 (terminal):在本系列文中會使用到終端機,它在 Windows 裡面稱「命令提示字元」,在 Mac 裡面稱「終端機」,後面統一叫「終端機」。
  2. 指令 (command line):本系列文會在終端機下指令,有時候指令會有命名的部分,這邊會用 <大寫英文> 當作佔位,讀者們自行輸入欲命名之名稱。另外,所有的指令開頭都會有一個 $ 表示這是指令,無須輸入該符號
  3. Nest:即 NestJS 簡稱,後面提到 Nest 都是指 NestJS。
  4. 底層系統:前面有提到 NestJS 可以選擇使用 Express 或 Fastify 作為底層,本系列文會以 Express 為主。
  5. 獨立篇幅:我會盡可能讓每一篇都是可以獨立閱讀的,讓各位在回頭看此系列文時,可以針對想要了解的部分去閱讀,不被前後文影響,但如果是同一主題拆成好幾篇的話,就可能會有前後文關係,再麻煩各位見諒一下。

具備條件

建議讀者們至少要具備以下條件,會比較容易理解接下來的內容:

  1. 後端基本知識:至少要知道 HTTP、HTTP Methods。
  2. 物件導向:有接觸過物件導向程式設計。
  3. TypeScript 或 JavaScript:Nest 支援這兩種語言,官方建議使用 TypeScript。
  4. 有用過 Node.js。
  5. 有使用過終端機。

開始之前...

提醒:Node.js 也可以使用 nvm 進行安裝。

  1. Node.js 官網下載並安裝 Node.js,這邊建議安裝 LTS 版本,會比較穩定。
  2. 使用 VSCodeAtom 等自己喜歡的編輯器。
  3. Postman 官網下載並安裝 Postman。
  4. 有任何問題都可以與我分享喔!

下一篇
[NestJS 帶你飛!] DAY02 - Hello NestJS
系列文
NestJS 帶你飛!32

2 則留言

0
json_liang
iT邦新手 4 級 ‧ 2021-09-16 16:28:22

很實用的文章!

HAO iT邦新手 3 級 ‧ 2021-09-16 16:55:25 檢舉

你們的支持是我最大的寫作動力,謝謝!

0
鱈魚
iT邦新手 4 級 ‧ 2021-10-12 10:23:05

感謝大大鉅細靡遺的分享 NestJS

真的受益良多

HAO iT邦新手 3 級 ‧ 2021-10-12 10:57:22 檢舉

謝謝你的支持與鼓勵!

我要留言

立即登入留言