Nestjs框架安装与启动

Nest是构建高效可扩展的 Node.js Web 应用程序的框架。 默认使用JavaScript的超集TypeScript进行开发。

环境准备

查看node和npm版本:

$ node --version
v10.11.0
$ npm --version
6.5.0

安装@nestjs/cli

使用npm全局安装@nestjs/cli:

$ npm i -g @nestjs/cli
/usr/local/bin/nest -> /usr/local/lib/node_modules/@nestjs/cli/bin/nest.js
+ @nestjs/cli@5.7.1
added 11 packages from 6 contributors, 
removed 27 packages and updated 12 packages in 10.322s

使用nest --version命令查看nest当前版本:

$ nest --version
5.7.1

使用nest new命令创建一个名为nest-app的项目:

$ nest new nest-app    

⚡️  Creating your Nest project...
?  We have to collect additional information:

? description: TEST nest-app
? version: 0.0.1
? author: wangyt

?  Thank you for your time!

CREATE /nest-app/.prettierrc (51 bytes)
CREATE /nest-app/README.md (3441 bytes)
CREATE /nest-app/nodemon-debug.json (163 bytes)
CREATE /nest-app/nodemon.json (132 bytes)
CREATE /nest-app/package.json (1653 bytes)
CREATE /nest-app/tsconfig.build.json (109 bytes)
CREATE /nest-app/tsconfig.json (390 bytes)
CREATE /nest-app/tsconfig.spec.json (137 bytes)
CREATE /nest-app/tslint.json (426 bytes)
CREATE /nest-app/src/app.controller.spec.ts (592 bytes)
CREATE /nest-app/src/app.controller.ts (274 bytes)
CREATE /nest-app/src/app.module.ts (249 bytes)
CREATE /nest-app/src/app.service.ts (142 bytes)
CREATE /nest-app/src/main.ts (208 bytes)
CREATE /nest-app/test/app.e2e-spec.ts (599 bytes)
CREATE /nest-app/test/jest-e2e.json (183 bytes)
CREATE /nest-app/nest-cli.json (84 bytes)
? Which package manager would you ❤️  to use? npm
✔ Installation in progress... ☕️
?  Successfully created project nest-app
?  Get started with the following commands:
  $ cd nest-app
  $ npm run start
          Thanks for installing Nest ?
 Please consider donating to our open collective
        to help us maintain this package.                       
?  Donate: https://opencollective.com/nest

启动项目

进入项目,并启动项目

$ cd nest-app 
$ npm run start

> nest-app@0.0.1 start /Users/wangtom/development/nest-app
> ts-node -r tsconfig-paths/register src/main.ts
[Nest]6315 - 2018-12-18 09:52:48[NestFactory]Starting Nest application...
[Nest]6315 - 2018-12-18 09:52:48[InstanceLoader]AppModule dependencies initialized +9ms
[Nest]6315 - 2018-12-18 09:52:48[RoutesResolver]AppController {/}: +34ms
[Nest]6315 - 2018-12-18 09:52:48[RouterExplorer]Mapped {/, GET} route +2ms
[Nest]6315 - 2018-12-18 09:52:48[NestApplication]Nest application successfully started +1ms

打开浏览器,访问http://localhost:3000/就可以看到Hello World!页面输出了。

项目结构

可以使用tree命令查看nest-app的目录结构:

nest-app
├── README.md
├── nest-cli.json
├── node_modules/
├── nodemon-debug.json
├── nodemon.json
├── package-lock.json
├── package.json
├── src
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   └── main.ts
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
├── tsconfig.json
├── tsconfig.spec.json
└── tslint.json

可以看到,和Angular的项目结构很像。

src/main.ts是项目的入口文件, 定义了一个异步方法(bootstrap)来启动应用,默认监听端口3000:

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

控制器: app.controller.ts

// 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();
  }
  // 自定义 getVersion 方法: 
  @Get('/version')
  getVersion(): Object {
    return this.appService.getVersion();
  }
}

控制器文件src/app.controller.ts中定义了一个getHello方法,使用@Get()进行路由注解。
getHello方法,调用了appService中的getHello方法,返回了 Hello World!;

// app.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
  // 自定义:获取版本
  getVersion(): Object {
    return {
      code: 200, 
      msg: "",
      data: {
        version:"0.0.1"
      }, 
    }
  }
}

自定义一个返回当前版本的接口,获取当前应用的版本:

在控制器app.controller.ts新增getVersion方法,使用@Get('/version')路由注解,表示访问’/version’会调用次方法。

在服务类app.service.ts中新增getVersion方法,用来返回内容,返回格式为Object

使用Control+C结束终端,这次我们使用npm run start:dev启动(项目文件有修复会自动重启):

$ npm run start:dev  

> nest-app@0.0.1 start:dev /Users/wangtom/development/nest-app
> nodemon
[nodemon] 1.18.9
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: /Users/wangtom/development/nest-app/src/**/*
[nodemon] starting `ts-node -r tsconfig-paths/register src/main.ts`
 ... 

访问http://localhost:3000/version, 输出json字符串内容:

{"code":200,"msg":"","data":{"version":"0.0.1"}}

参考链接

https://docs.nestjs.com/first-steps

感谢阅读,如有问题请留言。

[END]

NestJS是一个基于TypeScript和Node.js的现代全功能JavaScript框架。它专为构建高性能、模块化的API而设计。为了启动一个NestJS项目并运行微服务,你需要首先确保已经安装了Node.js环境。 ### 安装 NestJS 如果你还没有安装 `@nestjs/cli` 工具,可以使用以下命令全局安装: ```bash npm install -g @nestjs/cli ``` 或者如果你更倾向于使用Yarn: ```bash yarn global add @nestjs/cli ``` ### 创建新项目 创建一个新的NestJS项目,可以在终端输入以下命令,并按照提示操作: ```bash nest new my-project-name cd my-project-name ``` 这里 `"my-project-name"` 应该替换为你想要的项目名称。 ### 启动微服务 在创建完项目并且配置好依赖之后,你可以通过以下命令启动你的微服务: ```bash npm start:dev 或 yarn start:dev ``` 这里的 `start:dev` 表示以开发模式启动应用,这意味着应用会自动重启每次文件更改发生时,非常适合于开发阶段。 如果想以生产模式部署,使用: ```bash npm run start 或 yarn start ``` 这将启动一个无刷新机制的应用,适合于生产环境。 ### 相关问题: 1. **如何配置NestJS项目?** 答案通常涉及设置环境变量、数据库连接、中间件、路由等。NestJS官方文档提供了详细的指导和示例。 2. **NestJS项目的结构是什么样的?** NESTJS项目通常包括公共库、服务层、控制器、提供者等多个部分,每个部分都服务于特定目的,如基础业务逻辑、HTTP API、依赖注入等。 3. **如何处理错误和异常在NestJS中?** NESTJS提供了强大的错误处理机制,包括自定义异常处理器、中间件等,可以帮助开发者优雅地处理各种类型的错误情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web后端技术

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值