本文由图雀社区认证作者 布拉德特皮 写作而成,点击阅读原文查看作者掘金链接,感谢作者的优质输出,让我们的技术世界变得更加美好????
前言
本系列将以前端的视角进行书写,分享自己的踩坑经历。教程主要面向前端或者毫无后端经验,但是又想尝试 Node.js 的读者,当然,也欢迎后端大佬斧正。
Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。
在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。
Nest 是我近半年接触的一款后端框架,之前接触的是 Koa2,但因为老项目被“资深”前端写的乱七八糟,所以我就选择了这款以 TypeScript 为主的、最近在国内兴起的框架重构了。截止目前,Github 上的 nestjs 拥有 25.2k 个 Star,主要用户在国外,所以侧面可以证明其一定的稳定性。
Nest 采用 MVC 的设计模式,如果有 Angular 项目经验的读者,应该会觉得熟悉。我没写过 Angular,所以当初学的时候,走了一些弯路,主要是接受这种类 Spring 的设计理念。
![](https://i-blog.csdnimg.cn/blog_migrate/2cbca4843e488408ed0c76bb0f067b14.png)
好了,碎碎念到此为止,开始吧:
一、项目创建
项目环境:
node.js: 11.13.0+
npm: 6.7.0+
nestjs: 6.0.0
typescript: 3.8.3
先确操作系统上安装了 Node.js(>= 8.9.0),然后安装 Nest.js,然后新建项目,输入如下指令:
$ npm i -g @nestjs/cli
$ nest new project-name
输入完后,会初始化,此时,会问你使用哪一种方式来管理依赖包:
![](https://i-blog.csdnimg.cn/blog_migrate/1550b96944ac2835eaced4dbded0d41a.png)
我选择的是 yarn
,主要是国内的 npm
下载得比较慢。如果没有 yarn
的,可以下载一个,也可以使用 npm
,不过本系列教程都使用 yarn
。
等鸡啄完了米,等狗舔完了面,等火烧断了锁,就会得到下列信息:
![](https://i-blog.csdnimg.cn/blog_migrate/af152d89bdf3787427a4110584962c84.png)
按照提示,进入项目,不出意外,目录应该是这个样子的:
![](https://i-blog.csdnimg.cn/blog_migrate/70520eabd89964a3eb00d9a16d06f21d.png)
运行 yarn run start
或 yarn start
,会看到控制台输出如下信息,表示服务已启动:
![](https://i-blog.csdnimg.cn/blog_migrate/7c4e916c41393ddfb38a6a1a0583f60c.png)
二、Hello World!
1. 路由指向
打开 src
下的 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();
await NestFactory.create(AppModule);
表示使用 Nest 的工厂函数创建了 AppModule,关于 Module 稍后会介绍。
await app.listen(3000)
表示监听的是 3000 端口,这个可以自定义。若 3000 端口被占用