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 会有一些基础案例跟架子
相关文章
|
开发者
「代码强迫症?」从0到1实现项目代码拼写检查 vscode 插件:project-spell-checker(一)
「代码强迫症?」从0到1实现项目代码拼写检查 vscode 插件:project-spell-checker(一)
503 0
|
前端开发 JavaScript 中间件
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
|
机器学习/深度学习 编解码 算法
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
作为系列文章的第一篇解读,本文主要是从整体框架构建角度来解析,不会涉及到具体算法和代码,希望通过本文讲解: - MMDetection 整体构建流程和思想 - 目标检测算法核心组件划分 - 目标检测核心组件功能
1117 0
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
|
6月前
|
缓存 运维 前端开发
快速定位进程性能瓶颈
这篇文章详细介绍了进程热点追踪的概念、业务痛点、解决方案以及实际案例分析,旨在帮助开发者和运维人员快速定位和解决系统性能瓶颈问题。
快速定位进程性能瓶颈
|
消息中间件 SQL 数据可视化
最接地气的.NET微服务框架 - Wing
最接地气的.NET微服务框架 - Wing
379 0
|
消息中间件 数据采集 关系型数据库
离线数仓(三)【业务日志采集平台搭建】(2)
离线数仓(三)【业务日志采集平台搭建】
|
PHP 开发者
如何用Composer管理PHP项目的第三方扩展包
【7月更文挑战第2天】**Composer 是PHP开发的关键工具,用于管理项目依赖。安装需PHP 5.6.4+,通过官网脚本安装。在项目根目录创建 `composer.json` 文件定义依赖,使用 `composer require` 命令安装扩展包,如Guzzle。`composer.lock` 保证版本一致。`require_once &#39;vendor/autoload.php&#39;;` 实现自动加载。更新依赖用 `composer update`,管理依赖提升效率和项目维护性。深入学习可发掘更多高级功能。**
402 0
|
缓存 NoSQL Java
Spring Boot与Redis的缓存一致性问题
Spring Boot与Redis的缓存一致性问题
Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.
Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension.
|
安全 应用服务中间件 Linux
windows配置supervisor实现nginx自启
windows配置supervisor实现nginx自启
331 0