qrcode

马上订阅,开启修仙之旅

Nest系列教程之入门篇

nestjs-logo

Nest 用于构建高效且可扩展的服务器端应用程序的渐进式 Node.js 框架,深受 Angular 的启发。

Talk is cheap. Show me the code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';

@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];

create(cat: Cat) {
this.cats.push(cat);
}

findAll(): Cat[] {
return this.cats;
}
}

以上的代码对于 Angular 的小伙伴来说,是不是感觉很熟悉。除了代码层相似之外,系统模块架构也类似:

nestjs-module

下面我们步入正题,迈出 Nest 大门的第一步。

Nest 简介

Nest 是构建高效,可扩展的 Node.js Web 应用程序的框架。 它使用现代的 JavaScript 或 TypeScript(保留与纯 JavaScript 的兼容性),并结合 OOP(面向对象编程),FP(函数式编程)和 FRP(函数响应式编程)的元素。

在底层,Nest 使用了 Express,但也提供了与其他各种库的兼容,例如 Fastify,可以方便地使用各种可用的第三方插件。

Nest 设计哲学

近几年,由于 Node.js,JavaScript 已经成为 Web 前端和后端应用程序的「通用语言」,从而产生了像AngularReactVue 等令人耳目一新的项目,这些项目提高了开发人员的生产力,使得可以快速构建可测试的且可扩展的前端应用程序。 然而,在服务器端,虽然有很多优秀的库、helper 和 Node 工具,但是它们都没有有效地解决主要问题 - 架构。

Nest 旨在提供一个开箱即用的应用程序体系结构,允许轻松创建高度可测试,可扩展,松散耦合且易于维护的应用程序。

Nest 快速入门

环境搭建

与使用 Angular CLI 搭建 Angular 开发环境一样,Nest 也为我们提供了 Nest CLI。对于新用户来说,你可以在命令执行以下命令安装 Nest CLI

1
$ npm i -g @nestjs/cli

安装完成后,我们继续执行以下命令来新建项目:

1
$ nest new nest-quickstart

目录结构

新建项目的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
├── README.md
├── node_modules
├── nodemon-debug.json
├── nodemon.json
├── package-lock.json
├── package.json
├── src
├── test
├── tsconfig.json
├── tsconfig.spec.json
├── tslint.json
└── webpack.config.js

其中 src 是源码目录,该目录下有以下几个核心文件:

1
2
3
4
├── app.controller.ts # 根控制器
├── app.module.ts # 应用程序根模块
├── app.service.ts # 根服务
└── main.ts # 应用程序入口文件

其中 main.ts 的代码如下,它负责引导我们的应用程序:

1
2
3
4
5
6
7
8
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

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

bootstrap 方法是一个异步函数,在该函数内部,通过调用 NestFactory.create 方法创建一个 Nest 应用实例,然后开始监听 3000 端口。

启动应用

在项目依赖安装完成后,可以运行以下命令启动应用:

1
$ npm run start

以上命令成功运行后,我们打开浏览器并访问 http://localhost:3000/,这时你将在浏览器看到 Hello World! 信息。


欢迎小伙伴们订阅前端修仙之路,及时阅读 Angular、RxJS、TypeScript 和 Node.js 最新文章。

qrcode