欢迎光临
我们一直在努力

⚡️搭建 Web 服务骨架:选择你的 Node.js 框架

大家好,我是大布布将军。

前三篇我们完成了基础准备:Node.js 环境、异步机制、以及 TypeScript 强类型。现在,我们面临一个关键选择:用什么框架来搭建我们的 Web 服务?

在 Node.js 世界中,主要有两种流派:

  • 极简主义: 以 Express.js 或 Koa.js 为代表。它们只提供 HTTP 路由和中间件的基础功能。
  • 企业级: 以 NestJS 为代表。它提供完整的架构模式(MVC/Module/Controller),内置依赖注入,是企业级应用的优秀选择。
  • 作为要转型全栈、追求高人效的工程师,我强烈推荐您优先学习 NestJS。

    1. 为什么推荐 NestJS?

    NestJS 是基于 Express/Fastify 之上的一个渐进式 Node.js 框架。它吸收了 Angular 的设计哲学,并高度拥抱 TypeScript。

    特性Express/Koa (极简)NestJS (企业级)理由
    架构规范 无。代码随意,高度依赖开发者的经验。 强制规范。 遵循模块、控制器、服务的分层模式。 易于团队协作和维护,适合复杂的 BFF 服务。
    TypeScript 可用,但需要额外配置。 内置支持。 是其设计核心。 降低配置难度,让 TS 优势最大化。
    依赖注入 (DI) 无。需要手动管理依赖。 内置 DI 容器。 轻松管理服务间的关系。 提高代码的解耦性、可测试性。

    2. 实践项目:API 骨架与路由

    我们来使用 NestJS 搭建一个简单的 API 骨架。

    步骤一:创建项目和模块

    NestJS 的哲学是**“模块化”**。你的整个应用被分解为多个模块(如 UserModule, ProductModule),每个模块只负责一块业务。

    Bash

    # 假设你已经安装了 NestJS CLI
    nest new my-bff-service # 创建一个新项目
    cd my-bff-service

    # 创建一个核心业务模块:用户模块
    nest generate module user
    # 这一步会生成 user/user.module.ts

    步骤二:创建控制器(Controller)

    控制器 (Controller) 负责接收 HTTP 请求,并定义 URL 路由。这是用户请求的入口。

    TypeScript

    // 📁 src/user/user.controller.ts

    import { Controller, Get } from '@nestjs/common';

    @Controller('users') // ① 定义基础路由前缀:/users
    export class UserController {
    // 假设我们有一个 UserService 来处理业务逻辑

    @Get('health') // ② 定义完整路由:GET /users/health
    checkHealth(): string {
    // 这是最简单的 API 接口,用来检查服务是否存活
    return 'User service is running!';
    }

    // ③ 定义另一个路由:GET /users/list
    @Get('list')
    getUsersList(): any { // 实际项目中应返回 ApiResponse<User[]>
    // 这里只是骨架,实际业务逻辑应该放在 Service 中
    return {
    message: 'User List Endpoint Ready',
    data: []
    };
    }
    }

    • 关联性: 前端通过 fetch('/users/list') 就能调用到 getUsersList() 方法。这就是你的 API 接口。
    步骤三:理解中间件 (Middleware)

    中间件是在请求到达控制器之前或之后执行的一系列函数。它是处理跨域、日志记录、身份验证等横切关注点的最佳场所。

    在 Express 中,中间件是简单的函数。在 NestJS 中,它通过 Module 统一管理。

    中间件任务作用
    日志记录 (Logging) 记录请求的方法、路径、时间、IP 地址。
    身份验证 (Authentication) 检查请求头中是否有有效的 JWT Token,没有则直接返回 401 错误。
    CORS 处理 配置允许哪些前端域名访问你的 BFF 接口。

    【实战应用】 :如果你想在所有 users 路由执行前检查用户的登录状态,你会在 UserModule 中配置一个身份验证中间件。只有通过校验,请求才能进入 UserController。

    3. RESTful API 规范设计

    在定义路由时,我们要遵循 RESTful 规范,让 API 接口清晰、可预测。

    • 资源名使用复数: /users, /products
    • 使用 HTTP 方法定义操作:
    操作HTTP 方法URL 示例
    创建 POST /users
    读取列表 GET /users
    读取详情 GET /users/101
    更新 PUT 或 PATCH /users/101
    删除 DELETE /users/101

    作为 BFF 工程师,你的职责是: 严格遵循这些规范,确保你的 API 对接给前端时是清晰、易用的。

    总结

    本篇我们使用 NestJS 搭建了 API 的骨架,定义了控制器和路由。这是您从前端框架(如 React/Vue)思维向后端框架思维转变的关键一步。
    在这里插入图片描述

    你现在拥有了一个能接收 HTTP 请求、定义清晰路由的 Node.js 服务。下一篇,我们将继续深入,把业务逻辑从 Controller 中剥离出来,引入 Service 层,并学习 BFF 模式中最核心的数据聚合和第三方 HTTP 请求。

    赞(0)
    未经允许不得转载:171主机测评 » ⚡️搭建 Web 服务骨架:选择你的 Node.js 框架
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址