NestJS簡介【+6學習資源】
已發表: 2023-01-06NestJS 是一個漸進式 Node.js 框架,用於構建可擴展、高效且可靠的服務器端應用程序。
NestJS 旨在消除雜亂無章的代碼庫。 它的模塊化結構可以很容易地將代碼組織到不同的模塊中。
NestJS 建立在 Typescript 之上,並在底層使用 ExpressJS。 NestJS 深受想要利用 TypeScript 類型檢查功能的開發人員的喜愛。 NestJS 結合了函數式反應式編程 (FRP)、面向對象編程 (OOP) 和函數式編程 (FP) 的不同方面。
為什麼選擇 NestJS?

NestJS 對初學者很友好,因為它具有良好的結構和易於使用的命令行界面 (CLI) 工具。 因此,開發人員可以在使用此 Node.js 框架時使用單個命令構建新功能。
NestJS 提供模塊、服務、控制器和測試堆來幫助您入門。 您還可以利用許多可用的樣板和模板來簡化您的開發之旅。
對於那些熟悉 JavaScript 和 Angular 中的循環、語法和條件的人來說,NestJS 的學習曲線很容易。
NestJS 的特點

建立在打字稿上
NestJS 建立在 Typescript 之上,Typescript 是 JavaScript 的上標。 Typescript 提供了更好的開發體驗,因為您不必在每次更改代碼時都手動檢查錯誤。 Typescript 基本上提供了 JavaScript 的所有功能,但還附帶了一些附加功能。
依賴注入容器
依賴注入將類使用的對象的初始化與類本身分開。 在這種情況下,該類稱為“客戶端”,而類依賴項稱為“服務”。 NestJS 中的這種內置 DI 使應用程序更加高效和模塊化。
強大的命令行界面 (CLI)
您可以使用 NestCLI 初始化、開發和維護所有 NestJS 應用程序。 使用 Nest CLI 可以做很多事情,例如;
- 腳手架項目
- 以開發模式服務於項目
- 構建並捆綁用於生產分發的應用程序
模塊化
每個 NestJS 應用程序都至少有一個模塊。 “根”模塊是最基本的。 在典型的 NestJS 應用程序中,應用程序的每個邏輯部分都將位於相同的域邊界(模塊)中。 這樣的設置使得組織組件變得容易,其中應用程序將具有多個模塊,這些模塊具有一組密切相關的功能。
單元測試
自動化測試有很多好處。 但是,設置此類測試的過程可能涉及更多。 NestJS 具有多種功能來幫助團隊構建和自動化測試。 NestJS 的好處是它可以與各種測試工具一起使用。 Nest 依賴注入系統在測試期間可用,可以輕鬆模擬組件。
數據庫競爭
使用 NestJS 時,您可以根據自己的需要和偏好輕鬆地與任何 SQL 或 NoSQL 數據庫集成。 將 NestJS 連接到數據庫非常簡單,因為您只需要加載適當的 Node.js 驅動程序。
支持各種圖書館
NestJS兼容多種工具,加速應用開發。 該框架無需額外配置即可支持日誌記錄、驗證、緩存、WebSockets、TypeORM、Mongoose 和 GraphQL。
NestJS 的架構和工作流程
NestJS 有一個由控制器、提供者和模塊組成的 3 層架構。 因此,開發人員可以創建不重疊的干淨代碼。

控制器
NestJS 中的控制器充當客戶端請求和響應之間的橋樑。 每當發出 HTTP 請求時,路由機制總是將請求定向到適當的控制器。 該框架使用裝飾器和類來創建控制器。 然後將每個類方法映射到路由以接收特定請求。
供應商
提供者可以被描述為 NestJS 的基礎。 提供程序作為依賴項注入並在各種對象之間創建關係。 一旦添加了 @Injectable() 裝飾器,NestJS 中的類(例如幫助程序、服務或存儲庫)就可以被視為提供者。 此類提供者也可以通過構造函數注入到類中,NestJS 將解決依賴關係。
模塊
NestJS 中的模塊匯集了一組密切相關的功能。 每個 NestJS 應用程序都有一個用作入口點的根模塊。 如果您想要有條理且易於閱讀的代碼,強烈建議使用多個模塊。 Nest 的“@Module()”裝飾器定義了一個模塊,還提供了與該模塊一起使用的依賴項、控制器和提供程序等信息。
NestJS 入門
確保安裝了 Node.js 和 npm。 您需要一個運行時環境,而 Node.js 非常適合此設置。 您需要版本 >= 12,v13 除外。 您可以通過這些命令檢查您是否安裝了 Node.js 和 npm;
node -v
npm -v
如果兩者都安裝了,您將獲得接近於此的輸出

如果您沒有它們,請通過官方頁面安裝它們。 幸運的是,Node.js 和 npm 是一起安裝的。
- 安裝 Nest CLI。 使用以下命令設置 CLI 和項目;
npm i -g @nestjs/cli
nest new project-name
出於演示目的,我們選擇項目名稱為 mynestapp。 NestJS 讓你有機會使用 Typescript 或 Vanilla JavaScript。 選擇適合您的內容,然後按回車鍵。 應用搭建完成後,文件結構將設置好,“src”文件夾將包含幾個核心文件,如屏幕截圖所示

- 運行應用程序/你的第一個 hello world
安裝完成後,運行這些命令來運行開發服務器
cd mynestapp
npm run start
在你的瀏覽器中輸入 http://localhost:3000/,你在 NestJs 上的第一個“Hello World”應該會顯示出來
NestJS:優點
- 簡單易學。 掌握 NestJS 很容易,特別是如果您來自 Angular 或對 JavaScript 有一般了解。 詳細的文檔還可以讓您輕鬆掌握使用這個強大的框架。
- 靈活。 你可以使用 NestJS 構建很多東西。 您可以使用此 Node.js 框架創建 MVC 應用程序、GraphQL 應用程序、RESTful API 和 Web 套接字。
- 自帶數以千計的模塊。 社區支持的模塊使開發人員在創建服務器端應用程序時可以輕鬆構建不同的功能。
- 快速發展和良好的架構。 使用 NestJS 時,您不必從頭開始創建所有內容。 但是,同一框架具有堅固的體系結構,可以輕鬆理解您的代碼。
NestJS:缺點
- 不適合有 TypeScript 和 Angular 背景的人。 NestJS 從 Angular 架構中藉鑑了很多,沒有這些知識的人可能需要時間來理解語法和結構。
- 某些地區缺乏。 NestJS 還很年輕,可能無法與一些基於 Python 和 GO 的成熟框架競爭。
使用 NestJS 的公司
#1。 阿迪達斯
阿迪達斯是一家鞋類製造商和設計師,也是使用 NestJS 的公司之一。 NestJS 的驚人功能一定吸引了這家鞋業巨頭在其後端使用它。

#2。 凱捷
Capgemini 是一家法國跨國公司,提供諮詢、技術、外包和專業服務。 該公司在其技術堆棧中使用 NestJS。
#3。 羅氏
羅氏是一家跨國醫療保健公司,有兩個部門; 製藥和診斷。 羅氏使用 NestJS 作為其主要網站上的技術堆棧之一。
學習資源
#1。 NestJS 從零到英雄

NestJS Zero to Hero 教開發人員如何使用 Typescript 和 Node.js 創建和部署企業後端應用程序。 該課程教授如何創建 API、授權和身份驗證、單元測試 Nest 應用程序以及用於數據庫交互的 TypeORM 等。
#2。 NestJS:完整的開發者指南

本課程教授開發人員如何使用 Nest、TypeScript 和 TypeORM 創建後端 API。 這份完整的指南包含設置 NestJS 應用程序編碼、測試和部署所需的一切。 您還將了解 NestJS Web 框架的幕後知識。
#3。 掌握 NestJS

NestJS 大師教授如何使用 TypeScript 開發企業級 Node.js 應用程序。 該課程教授驗證和數據序列化、JWT 令牌的工作原理、如何使用 NestCLI 和現代數據庫抽像等等。
#4。 NestJs 實踐(使用 MongoDB)

NestJS in Practice 從模塊、控制器、GuardsServices、管道和中間件中教授您需要了解的有關 NestJS 的一切知識。 該課程採用基於項目的方法,您可以在 GitHub 上編碼和託管您的代碼,每個部分都有可下載的 zip 文件。
#5。 Nest.js:漸進式 Node.js 框架
這本書向開發人員介紹了 NestJS 以及如何利用 JavaScript 和 TypeScript。 本書採用操作方法格式設計,以確保您可以立即設置和運行您的 NestJS 應用程序。
預習 | 產品 | 評分 | 價格 | |
---|---|---|---|---|
![]() | Nest.js:漸進式 Node.js 框架 | 24.99 美元 | 在亞馬遜上購買 |
#6。 實用的 Nest.js:開髮乾淨的 MVC web 應用程序
Practical Nest.js 這本書使用基於項目的方法來創建一個利用各種 NestJS 功能的在線商店應用程序。 這本書包括簡短的討論、技巧和創建 NestJS 應用程序時有用的短語。
預習 | 產品 | 評分 | 價格 | |
---|---|---|---|---|
![]() | 實用的 Nest.js:開髮乾淨的 MVC web 應用程序 | 16.99 美元 | 在亞馬遜上購買 |
結論
除了是一個強大的 Node.js 框架之外,NestJS 還是當今服務器端應用程序最流行的 Typescript 框架之一。 它提供編碼最佳實踐和標准開發架構的事實使其吸引了許多希望在構建應用程序時專注於構建業務邏輯的工程師。