記得去年參加 CoderBridge 舉辦的開發者寫作松,只零星寫了一些工作開發的東西,鮮少嘗試比較有連貫性的系列文,這次是個蠻新鮮的挑戰及體驗。
這系列的起源主要是去年開始開發資訊種子的新官網,資訊種子的朋友建議可以試試 Nest.js,才開始邊研究邊實作。
起初對 TypeScript 不熟,中間遇到了一些坑,但 Nest.js 的社群資源也還蠻豐富的 (還去官方 Discord 用破英文發問)。後來想說把開發學習及遇到的問題記錄下來,說不定之後負責維護的人也可以從中找到相似問題,甚至是能剛好幫助到學習 Nest.js 的人。
接下來為這個系列做的小總結吧!
Nest.js 優點
- 基於
Express
,但也可以選用配置Fastify
- 完美支援
TypeScript
,強型別以及預先檢查減少開發上的預期外錯誤 (這各有擁護者,但我開發上覺得體驗不錯) - 嚴謹的分層,彈性高、鬆散耦合、高度可測試及維護
- 官方文件完善,社群豐富
Nest.js 架構
- Controller
控制器,從 Module 被呼叫,並擁有基本路由設定
,主要負責接收 client 端的 requests 以及 response。 - Module
類似於 Angular 的 NgModule,讓我們把類型或功能相似的程式封裝成一個一個不同的模組。 - Service
service 主要處理商業邏輯的操作,透過注入依賴的方式讓 Controller 和其他 Service 可以使用。
Postgresql && TypeORM
主要分享:
- 如何用 Docker 建立 Postgresql 及 pgAdmin
- TypeORM 連線以及建立 Entity
CRUD
透過 Nest.js 啟動 Web service,並能呼叫 API 實作資料庫 CRUD,流程如下:
- 先在 Module 註冊會使用到的
Controller
、Service
、TypeORM
。 - 在
Service
引入Repository
,並寫好 CRUD method。 - 在
Controller
設定好 route,並呼叫Service
的 method。
謝謝有看這個系列的讀者,之後如果研究 Nest.js 有新的心得,再來寫成文章分享!