跟着哲玄大佬从0开发一个企业级全栈应用框架,有兴趣的同学可以去抖音搜索哲玄前端(全栈)
前言
本文记录elpis项目的基本介绍以及收获
项目框架设计
本项目基于Koa框架设计,手动实现BFF层,具体结构如图所示
什么是BFF层?
BFF层(Backend For Frontend,前端专用后端)是一种架构模式,旨在为特定前端应用或用户界面提供定制化的后端服务。
主要特点
- 前端定制化:为特定前端应用提供专门优化的API
- 聚合服务:整合多个微服务功能,减少前端发起的请求数量
- 数据转换:将后端数据转换为更适合前端使用的格式
- 协议适配:处理不同协议间的转换
优劣
- 减少前端与多个微服务直接通信的复杂性
- 提高前端性能(通过减少请求次数和优化数据格式)
- 允许前后端独立演进
- 为不同客户端提供差异化服务
项目目录结构及功能
elpis
|-- app // 文件目录
| |-- controller // 业务逻辑处理
| |-- extend // 拓展
| |-- middleware // 中间件
| |-- public // 静态资源根目录
| |-- router // 路由
| |-- router-schema // 路由校验规则
| |-- service // 数据处理
| |-- middlewares.js // 全局中间件
|-- config // 环境配置文件
|-- elpis-core // 引擎内核
| |-- loader // 各种加载器
| | |-- config // 加载环境配置文件
| | |-- controller // 加载业务逻辑处理文件
| | |-- extend // 加载扩展文件
| | |-- middleware // 加载中间件文件
| | |-- router-schema // 加载路由校验规则文件
| | |-- router // 加载路由文件
| | |-- service // 加载数据处理文件
| |-- env.js // 运行环境判断(以后可能还有别的用处)
| |-- index.js // 引擎内核的入口文件
|-- index.js // 项目的入口文件
项目启动
elpis入口文件加载loader中的各种加载器,加载器会加载app文件夹下对应的文件并应用
项目运行
洋葱圈模型(先进后出)
- 发起请求
- 匹配router
- 经过中间件(错误捕获 ---> 参数校验(router-schema) ---> 其他中间件)
- 响应结果
总结
经过这一阶段的学习,对服务端的项目结构以及构成模块有了更清楚的认识