掘金 后端 ( ) • 2024-06-25 17:34

Nest.js是一个基于Node.js的渐进式框架,它利用了TypeScript的强大类型系统和装饰器语法,结合了OOP(面向对象编程)、FP(函数式编程)和FRP(函数响应式编程)的优秀思想,旨在提供一个强大、模块化且高度可伸缩的服务器端开发解决方案。本文将引导你从零开始,搭建一个Nest.js应用,并逐步介绍其核心概念和基本操作,让你快速入门这个充满魅力的框架。

环境准备

  1. 安装Node.js: 确保你的系统上安装了Node.js(建议使用长期支持版 LTS)。你可以访问 Node.js官方网站 下载安装。
  2. 安装Nest CLI: Nest.js提供了命令行工具来简化项目创建和管理。通过npm或yarn全局安装:

Bash

1npm install -g @nestjs/cli
2# 或者使用Yarn
3yarn global add @nestjs/cli

创建Nest.js项目

  1. 初始化项目: 使用Nest CLI创建一个新的Nest应用。在终端中执行以下命令:

Bash

1nest new my-nest-app

这里my-nest-app是你的项目名称,可以根据喜好更改。

  1. 进入项目目录:

Bash

1cd my-nest-app

理解项目结构

Nest.js采用模块化的架构,让我们看看主要的目录结构:

  • src: 应用的主要源代码目录。

    • app.module.ts: 应用的根模块,所有其他模块都从这里导入。
    • main.ts: 应用的启动点。

基本概念

  • Module(模块) : Nest应用的核心构建块,负责组织相关组件、服务、控制器等。
  • Controller(控制器) : 负责处理HTTP请求。
  • Service(服务) : 业务逻辑的容器,通常用来处理数据和逻辑。
  • Dependency Injection(依赖注入) : Nest内置了强大的依赖注入系统,便于管理组件之间的依赖关系。

开发第一个API

让我们创建一个简单的API,用于返回“Hello World”。

  1. 生成模块和控制器:

Bash

1nest generate module hello
2nest generate controller hello

这将在src目录下创建hello模块和hello.controller.ts文件。

  1. 编辑hello.controller.ts:

打开hello.controller.ts,添加一个路由处理器来响应GET请求:

Typescript

1import { Controller, Get, Render } from '@nestjs/common';
2
3@Controller('hello')
4export class HelloController {
5  @Get()
6  async sayHello(): Promise<string> {
7    return 'Hello, world!';
8  }
9}

这里,@Controller('hello')装饰器指定了控制器处理所有以/hello开头的请求,而@Get()装饰器则指定了该方法处理GET请求。

  1. 启动应用:

回到终端,运行以下命令启动应用:

Bash

1npm run start
2# 或者使用Yarn
3yarn start

默认情况下,应用会在http://localhost:3000启动。访问http://localhost:3000/hello,你应该能看到“Hello, world!”。

总结

通过以上步骤,你已经成功创建并运行了你的第一个Nest.js应用。这只是冰山一角,Nest.js的强大在于其深度集成的模块化、依赖注入、中间件、管道、守卫等功能,以及对数据库操作、认证授权、CQRS等高级特性的良好支持。随着项目的深入,你将逐步解锁更多Nest.js的魅力,构建出复杂而优雅的后端服务。继续探索,享受编程的乐趣吧!