一、起步
// nestjs脚手架安装
npm install -g @nestjs/cli
// 新建一个项目
nest new demo
二、目录结构

目录结构
三、程序入口 main.ts
// NestFactory核心类暴露一些静态方法用来创建应用实例
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
  // create 方法返回一个实现 INestApplication 接口的对象
  const app = await NestFactory.create(AppModule);
  // 端口号为 3000
  await app.listen(3000);
}
bootstrap();
四、根模块 app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// @Module()装饰器提供了元数据,Nest 用它来组织应用程序结构
@Module({
  // 由 Nest 注入器实例化的控制器
  controllers: [AppController],
  // 由 Nest 注入器实例化的提供者
  providers: [AppService],
  // 导入模块的列表,这些模块导出了此模块中所需提供者
  imports: [],
  // 由本模块提供并应在其他模块中可用的提供者的子集 
  exports: []
})
export class AppModule {}
五、提供者 app.serive.ts
import { Injectable } from '@nestjs/common';
// @Injectable() 声明当前类为提供者 处理业务逻辑
@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}
六、控制器 app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
// @Controller() 声明当期类为控制器 接收应用程序的特定请求
@Controller()
export class AppController {
  // 依赖注入 AppService
  constructor(private readonly appService: AppService) {}
  // @Get() HTTP请求方法装饰器
  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}
七、启动应用程序
npm run start

启动成功
打开浏览器访问 http://localhost:3000 返回 ’Hello World!‘