[Nest] 01.初見nest.js

github前端

nest 介紹

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 和 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 的方法.固然該類型能夠不指定.

Doc

相關文章
相關標籤/搜索