构建 nest.js 项目
方式一:使用 Nest CLI 构建项目,请运行以下命令
$ npm i -g @nestjs/cli // 安装 nest 脚手架
$ nest new project-name // 使用脚手架创建项目
复制代码
方式二:使用 Git 安装采用 TypeScript 开发的 starter 项目:
$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start:dev
复制代码
打开浏览器并导航到 http://localhost:3000/
地址。
项目目录结构:
① app.controller.ts 带有单个路由的基本控制器;
② app.controller.spec.ts 针对控制器的单元测试;
③ app.module.ts 应用程序的根模块(root module);
④ app.service.ts 具有单一方法的基本服务(service);
⑤ main.ts 应用程序的入口文件,它使用核心函数 NestFactory
来创建 Nest 应用程序的实例。
// src/main.ts:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule); // 创建 nest 应用实例;
await app.listen(3000); // 监听 3000 端口;
}
bootstrap();
复制代码
// src/app.module.ts:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
复制代码
// src/app.controller.ts:
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
复制代码
// src/app.service.ts:
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
复制代码
控制器(controllers)
控制器负责处理传入的 请求 并将 响应 返回给客户端。
提供者(Providers)
Providers是 Nest 中的一个基本概念。许多Nest类可以是 Provider:Service、Repository、Factory、Helper等。Provider 只是一个用 @Injectable()
装饰器注释的类,它可以注入依赖项,在对象之间创建各种关系。
模块(Modules)
模块是具有 @Module()
装饰器的类。 @Module()
装饰器提供了元数据,Nest 用它来组织应用程序结构。