Nestjs(二)cli 创建项目与基本使用

简介: Nestjs(二)cli 创建项目与基本使用

一、创建项目

  • 安装 cli
$ npm i -g @nestjs/cli
  • 新建 nestjs 工程
$ nest new [项目名称]
# 严格模式
$ nest new [项目名称] --strict
? **Which package manager would you ❤️  to use?** (Use arrow keys)
❯ npm 
  yarn 
  pnpm
  • 启动 nestjs 工程
# 直接启动本地项目,支持热更新,一般开发跑这个
$ npm run start:dev
# 直接启动本地项目,不支持热更新
$ npm run start
# 其他命令看一看就知道
# 跑起来之后 main.ts 中默认端口 3000,所以访问 http://localhost:3000/
  • 创建项目后 src 基本案例文件作用
src
 ├── app.controller.spec.ts         // 基本控制器的单元测试样例
 ├── app.controller.ts              // 单个路由的基本控制器示例
 ├── app.service.ts                 // 带有单个方法的基本服务
 ├── app.module.ts                  // 应用程序的根模块
 └── main.ts                        // 应用程序入口文件。它使用 `NestFactory` 用来创建 Nest 应用实例。
  • 例如默认启动访问 http://localhost:3000/ 即可输出 Hello World!
    那么通过下面调整 app.controller.ts 即可通过不同路由输出同样的结果:
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller('/')
export class AppController {
  constructor(private readonly appService: AppService) { }
  @Get('/hello')
  getHello(): string {
    return this.appService.getHello();
  }
}
// 访问地址 http://localhost:3000/hello
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller('/api')
export class AppController {
  constructor(private readonly appService: AppService) { }
  @Get('/hello')
  getHello(): string {
    return this.appService.getHello();
  }
}
// 也支持去掉前面的 / ,结果一样
// @Controller('api')
// export class AppController {
//   constructor(private readonly appService: AppService) { }
//   @Get('hello')
//   getHello(): string {
//     return this.appService.getHello();
//   }
// }
// 访问地址 http://localhost:3000/api/hello

二、常用指令

  • 查看指令
dengzemiao@MacBook demo % nest -h
Usage: nest <command> [options]
Options:
  -v, --version                                   Output the current version.
  -h, --help                                      Output usage information.
Commands:
  new|n [options] [name]                          Generate Nest application.
  build [options] [app]                           Build Nest application.
  start [options] [app]                           Run Nest application.
  info|i                                          Display Nest project details.
  add [options] <library>                         Adds support for an external library to your project.
  generate|g [options] <schematic> [name] [path]  Generate a Nest element.
    Schematics available on @nestjs/schematics collection:
      ┌───────────────┬─────────────┬──────────────────────────────────────────────┐
      │ name          │ alias       │ description                                  │
      │ application   │ application │ Generate a new application workspace         │
      │ class         │ cl          │ Generate a new class                         │
      │ configuration │ config      │ Generate a CLI configuration file            │
      │ controller    │ co          │ Generate a controller declaration            │
      │ decorator     │ d           │ Generate a custom decorator                  │
      │ filter        │ f           │ Generate a filter declaration                │
      │ gateway       │ ga          │ Generate a gateway declaration               │
      │ guard         │ gu          │ Generate a guard declaration                 │
      │ interceptor   │ itc         │ Generate an interceptor declaration          │
      │ interface     │ itf         │ Generate an interface                        │
      │ library       │ lib         │ Generate a new library within a monorepo     │
      │ middleware    │ mi          │ Generate a middleware declaration            │
      │ module        │ mo          │ Generate a module declaration                │
      │ pipe          │ pi          │ Generate a pipe declaration                  │
      │ provider      │ pr          │ Generate a provider declaration              │
      │ resolver      │ r           │ Generate a GraphQL resolver declaration      │
      │ resource      │ res         │ Generate a new CRUD resource                 │
      │ service       │ s           │ Generate a service declaration               │
      │ sub-app       │ app         │ Generate a new application within a monorepo │
      └───────────────┴─────────────┴──────────────────────────────────────────────┘
  • 生成 user.controller.ts
$ nest g co user

  • 可以访问 http://localhost:3000/user/dzm 即可输出 Hello Dzm!
  • 生成 user.service.ts
$ nest g s user

  • 依然可以访问 http://localhost:3000/user/dzm 即可输出 Hello Dzm!
  • 如果考虑给一个模块生成 module.ts,那就必须最先执行,因为这是一个块的根入口,使用也只需要将这个module.ts 导入到别的根入口就行,就相当于整个块都导到另外一个模块中去了。
    例如:先执行创建 user.module.tsuser.module.ts 会被自动注入到 app.module.ts 中引用上,然后在执行上面创建 controller.tsservice.ts 等其他指令,这些 user 块的其他文件则会被自动注入到 user.module.ts 中,这样就能直接进行跑代码,而不需要二次调整,跑起来的结果跟上面单个案例一样。
$ nest g mo user
  • 以上步骤是一个一个生成的,还有个指令直接可以生成全套 CURD
$ nest g resource user
? What transport layer do you use? (Use arrow keys)
❯ REST API 
  GraphQL (code first) 
  GraphQL (schema first) 
  Microservice (non-HTTP) 
  WebSockets 
? Would you like to generate CRUD entry points? (Y/n) Y
# 下面有选了 Y/n 的效果,选了 Y 会有一些基础案例跟架子
相关文章
|
10月前
|
JavaScript 前端开发 开发者
Vue-cli搭建SPA项目1
Vue-cli搭建SPA项目1
42 0
|
8月前
|
JavaScript 前端开发 测试技术
通过Vue-cli搭建spa项目
通过Vue-cli搭建spa项目
|
10月前
|
JavaScript 前端开发
Vue-cli搭建SPA项目2
Vue-cli搭建SPA项目2
45 0
|
2月前
|
JavaScript 前端开发 容器
脚手架cli3
脚手架cli3
|
2月前
|
JavaScript 前端开发 Java
Vue CLI脚手架安装、搭建、配置 和 CLI项目分析
Vue CLI脚手架搭建和分析 详解。
91 0
|
7月前
|
资源调度 JavaScript 前端开发
vue-cli安装与搭建SPA项目
vue-cli安装与搭建SPA项目
56 0
|
7月前
|
资源调度 JavaScript 前端开发
五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)
五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)
|
7月前
|
JavaScript 测试技术 开发工具
使用vue-cli搭建spa项目
使用vue-cli搭建spa项目
|
8月前
|
JavaScript 前端开发 数据安全/隐私保护
一篇让你使用vue-cli搭建SPA项目
一篇让你使用vue-cli搭建SPA项目
123 0
|
8月前
|
资源调度 JavaScript 前端开发
使用vue-cli搭建SPA项目
使用vue-cli搭建SPA项目
32 0