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]