iT邦幫忙

2021 iThome 鐵人賽

DAY 1
5
Modern Web

NestJS 帶你飛!系列 第 1 篇

[NestJS 帶你飛!] DAY01 - 簡介

  • 分享至 

  • xImage
  •  

本系列文已出版成書「NestJS 基礎必學實務指南:使用強大且易擴展的 Node.js 框架打造網頁應用程式」,感謝 iT 邦幫忙與博碩文化的協助。如果對 NestJS 有興趣、覺得這個系列文對你有幫助的話,歡迎前往購書,你的支持是我最大的寫作動力!

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

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

後來出現了一套名為 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. 使用 VSCode 等自己喜歡的編輯器。
  3. 至 Postman 官網下載並安裝 Postman。
  4. 有任何問題都可以與我分享喔!

下一篇
[NestJS 帶你飛!] DAY02 - Hello NestJS
系列文
NestJS 帶你飛! 共 32 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
json_liang
iT邦研究生 2 級 ‧ 2021-09-16 16:28:22

很實用的文章!

HAO iT邦研究生 1 級 ‧ 2021-09-16 16:55:25 檢舉

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

0
鱈魚
iT邦研究生 4 級 ‧ 2021-10-12 10:23:05

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

真的受益良多

HAO iT邦研究生 1 級 ‧ 2021-10-12 10:57:22 檢舉

謝謝你的支持與鼓勵!

我要留言

立即登入留言