Node Web后端框架 Express 的学习 --- ②

2,338 阅读2分钟

目录

引言

在上篇的基础上,我们学会了怎么搭建 Express 框架的平台,本篇目的在于教会初学者,怎么一步步实现类似于SpringBoot框架的轻量级结构,以及实现项目目录文件等的功能划分,路由分离等

一、项目划分

  1. Controller层:负责路由接收
  2. Service层:负责业务逻辑
  3. Dao层:负责数据库的操作等
  4. Common目录:负责管理工具、配置文件信息等

创建文件夹以及文件如图所示

image.png

二、分离文件需求分析

  1. 模块化:按功能划分模块,如路由、数据库等。
  2. 文档化:确保有清晰的文档说明目录结构。
  3. 服务化:对于复杂的业务逻辑,可以将其设计为独立的服务,与其他部分解耦。
  4. 复用率:提高代码可复用率,减少代码冗余

三、实现

1. app.js文件分离

1.1 启动文件分离

// 以下两行注释仅用于记录系统启动速度,读者可自行斟酌。
const port = 3000;
// console.time(`Service http://localhost:${port} Start Time`);

const app = require("./src");

app.listen(port, () => {
    // console.timeEnd(`Service http://localhost:${port} Start Time`);
    console.log(`Service http://localhost:${port}`);
});

1.2 app操作分离

const app = require("express")();

app.use("/", require("./controller"));

module.exports = app;

2. 路由分离、三层架构各司其职

2.1 路由汇总

// 负责所有路由的导入
const router = require("express").Router();
router.use("/user", require("./UserController"));
module.exports = router;

2.2 封装返回信息类

class Result {
    // 定义一个构造函数
    constructor(code, message, data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
    // 成功
    static success(data) {
        return new Result(200, "success", data);
    }
    // 异常
    static error(message) {
        return new Result(500, message, null);
    }
    
    // 相关服务
    static Redis(){
        return new Result(500, "Redis错误", null);
    }
    static Db(){
        return new Result(500, "数据库错误", null);
    }
}
module.exports = Result;

2.3 三层架构

const UserControler = require("express").Router();
const UserService = require("../service/UserService");
const Result = require("../common/models/Result");

UserControler.get("/", async (req, res) => {
    res.send(Result.success(await UserService.getUserList()));
});

module.exports = UserControler;
const UserDao = require("../dao/UserDao");

class UserService {
    async getUserList(){
        return await UserDao.getUserList();
    }
}
module.exports = new UserService();
class UserDao {
    async getUserList() {
        return "Dao UserList";
    }
}
module.exports = new UserDao();

结尾

至此最简的Express搭建出来了,而接下来就是Express中间件的学习了。

下一篇 Node Web后端框架 Express 的学习 --- 终