github前端
Nest 是一個用於構建高效,可擴展的 Node.js 服務器端應用程序的框架。它使用漸進式 JavaScript,內置並徹底支持 TypeScript(但仍然容許開發人員使用純 JavaScript 編寫代碼)並結合了 OOP(面向對象編程),FP(函數式編程)和 FRP(函數式響應編程)的元素。node
在底層,Nest 使用強大的 HTTP Server 框架,如 Express(默認)和 Fastify。Nest 在這些框架之上提供了必定程度的抽象,同時也將其 API 直接暴露給開發人員。這樣能夠輕鬆使用每一個平臺的無數第三方模塊。webpack
近年來,感謝 Node.js,JavaScript 已成爲前端和後端應用程序的網絡「通用語言」。這產生了使人敬畏的項目,如 Angular,React 和 Vue,它們提升了開發人員的工做效率,並可以構建快速,可測試和可擴展的前端應用程序。然而,雖然 Node(和服務器端 JavaScript )存在大量優秀的庫,幫助器和工具,但它們都沒有有效地解決主要問題 - 架構。git
Nest 提供了一個開箱即用的應用程序架構,容許開發人員和團隊建立高度可測試,可擴展,鬆散耦合且易於維護的應用程序github
您可使用 Nest CLI 構建項目,也能夠克隆啓動項目(二者都會產生相同的結果)。web
安裝 clitypescript
npm i -g @nestjs/cli
建立項目目錄express
nest new project-name
更簡單些能夠直接 clone 官方預設項目npm
git clone https://github.com/nestjs/typescript-starter.git project cd project npm install npm run start
新建立的 project-name 目錄結構編程
├── README.md ├── node_modules ├── nodemon-debug.json ├── nodemon.json ├── package-lock.json ├── package.json ├── src ├── test ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json └── webpack.config.js
src 是源碼目錄
├── app.controller.ts # 根控制器 ├── app.controller.spec.ts # 根控制器測試文件 ├── app.module.ts # 應用程序根模塊 ├── app.service.ts # 根服務 └── main.ts # 應用程序入口文件
main.ts 代碼
import { NestFactory } from '@nestjs/core'; async function bootstrap() { const app = await NestFactory.create(); await app.listen(6688); } bootstrap();
經過 async 和 await 並使用了 NestFactory 核心類建立一個 Nest 應用實例.NestFactory 暴露了一些靜態方法用於建立應用實例,create() 方法返回一個實現 INestApplication 接口的對象,.而且監聽 6688 接口
開啓應用
npm start
啓動 HTTP 服務器,項目會啓動並監聽一個接口 6688,此時訪問 localhost:6688 或者 127.0.0.1:6688 能夠看到 nest 信息
Nest 能夠在建立適配器後使用任何 Node HTTP 框架。 有兩個支持開箱即用的 HTTP 平臺:express 和 fastify。 您能夠選擇最適合您需求的產品。
當使用 express
npm i --save @nestjs/platform-express
main.ts
import { NestFactory } from '@nestjs/core'; import { NestExpressApplication, } from '@nestjs/platform-express'; import { ApplicationModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create<NestExpressApplication>( ApplicationModule, ); await app.listen(6688); } bootstrap();
當使用 fastify
npm i --save @nestjs/platform-fastify
main.ts
import { NestFactory } from '@nestjs/core'; import { FastifyAdapter, NestFastifyApplication, } from '@nestjs/platform-fastify'; import { ApplicationModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create<NestFastifyApplication>( ApplicationModule, new FastifyAdapter(), ); await app.listen(6688); } bootstrap();
無論是使用 express 仍是 fastify,它都會暴露本身的應用程序界面.它們分別是 NestExpressApplication 和 NestFastifyApplication.將類型傳遞給 NestFactory.create() 方法時,就能夠訪問底層平臺 API,app 對象能夠調用 express 或者 fastify 的方法.固然該類型能夠不指定.