Nest (NestJS) 是一個(gè)用于構(gòu)建高效、可擴(kuò)展的 Node.js 服務(wù)器端應(yīng)用程序的開(kāi)發(fā)框架。它利用 JavaScript 的漸進(jìn)增強(qiáng)的能力,使用并完全支持 TypeScript (仍然允許開(kāi)發(fā)者使用純 JavaScript 進(jìn)行開(kāi)發(fā)),并結(jié)合了 OOP (面向?qū)ο缶幊蹋?、FP (函數(shù)式編程)和 FRP (函數(shù)響應(yīng)式編程)。 在底層,Nest 構(gòu)建在強(qiáng)大的 HTTP 服務(wù)器框架上,例如 Express (默認(rèn)),并且還可以通過(guò)配置從而使用 Fastify ! Nest 在這些常見(jiàn)的 N
Nest (NestJS) 是一個(gè)用于構(gòu)建高效、可擴(kuò)展的 Node.js 服務(wù)器端應(yīng)用程序的開(kāi)發(fā)框架。它利用 JavaScript 的漸進(jìn)增強(qiáng)的能力,使用并完全支持 TypeScript (仍然允許開(kāi)發(fā)者使用純 JavaScript 進(jìn)行開(kāi)發(fā)),并結(jié)合了 OOP (面向?qū)ο缶幊蹋?、FP (函數(shù)式編程)和 FRP (函數(shù)響應(yīng)式編程)。
在底層,Nest 構(gòu)建在強(qiáng)大的 HTTP 服務(wù)器框架上,例如 Express (默認(rèn)),并且還可以通過(guò)配置從而使用 Fastify !
Nest 在這些常見(jiàn)的 Node.js 框架 (Express/Fastify) 之上提高了一個(gè)抽象級(jí)別,但仍然向開(kāi)發(fā)者直接暴露了底層框架的 API。這使得開(kāi)發(fā)者可以自由地使用適用于底層平臺(tái)的無(wú)數(shù)的第三方模塊。
近年來(lái),由于 Node.js、JavaScript 已經(jīng)成為 web 前端和后端應(yīng)用程序的“通用開(kāi)發(fā)語(yǔ)言”。這促成了諸如 Angular、React 和 Vue 等優(yōu)秀項(xiàng)目的出現(xiàn),他們提高了開(kāi)發(fā)者的工作效率,并能夠創(chuàng)建快速、可測(cè)試和可擴(kuò)展的前端應(yīng)用程序。然而,盡管 Node (和服務(wù)器端 JavaScript)擁有大量?jī)?yōu)秀的軟件庫(kù)、輔助程序和工具,但沒(méi)有一個(gè)能夠有效地解決我們所面對(duì)的主要問(wèn)題,即 架構(gòu)。
Nest 提供了一個(gè)開(kāi)箱即用的應(yīng)用程序體系結(jié)構(gòu),允許開(kāi)發(fā)者及其團(tuán)隊(duì)創(chuàng)建高度可測(cè)試、可擴(kuò)展、松散耦合且易于維護(hù)的應(yīng)用程序。這種架構(gòu)深受 Angular 的啟發(fā)。
開(kāi)始之前,你可以使用 Nest CLI 創(chuàng)建項(xiàng)目,也可以克隆一個(gè) starter project(兩者的結(jié)果是一樣的)。
若要使用 Nest CLI 構(gòu)建項(xiàng)目,請(qǐng)運(yùn)行以下命令。這將創(chuàng)建一個(gè)新的項(xiàng)目目錄,并使用核心的 Nest 文件和支撐模塊填充該目錄,從而為項(xiàng)目創(chuàng)建一個(gè)傳統(tǒng)的基本結(jié)構(gòu)。建議初學(xué)者使用 Nest CLI 創(chuàng)建新項(xiàng)目。我們將 第一步 章節(jié)中繼續(xù)采用這種方法。
$ npm i -g @nestjs/cli
$ nest new project-name
或者,使用 Git 安裝采用 TypeScript 開(kāi)發(fā)的 starter 項(xiàng)目:
$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start
打開(kāi)瀏覽器并導(dǎo)航到 http://localhost:3000/ 地址。
若要安裝基于 JavaScript 的 starter project,請(qǐng)?jiān)趫?zhí)行上面的命令時(shí)使用 javascript-starter.git 。
你還可以通過(guò) npm (或 yarn)來(lái)安裝的核心和支撐文件,從頭開(kāi)始手動(dòng)創(chuàng)建一個(gè)新項(xiàng)目。當(dāng)然,在這種情況下,你將自己擔(dān)負(fù)起創(chuàng)建項(xiàng)目樣板文件的工作。
$ npm i --save @nestjs/core @nestjs/common rxjs reflect-metadata