Skip to content

elpis-core | 整体架构总览

原创
作者:张开朗呀~
更新:
字数: 0 字
时长: 0 分钟

一、前言

想要吃透一款框架的底层架构,真的不用死磕晦涩源码、堆砌零散知识点!我整理了一套四步高效学框架方法论,由浅入深、层层递进,帮你快速拿捏 elpis-core 核心逻辑 ✨

本篇文章就用这套极简思路,带大家轻松拆解 elpis-core 内核:搞懂定位价值、摸清架构流程、拆解模块分工、串起全链路逻辑,高效搞定框架核心能力 ✅

  • 先知其意👀:读懂框架核心定位、核心价值

  • 再见轮廓🗺️:摸清整体架构、完整运行流程

  • 分而治之🧩:拆解各模块职责、工程目录结构

  • 无缝衔接🔗:串联全链路,打通完整运行逻辑

二、核心定义(先知其意)

核心定位

elpis-core 是基于 Node.js 打造的轻量化服务端内核引擎,核心主打 BFF 前后端中间层能力,就像前后端交互的「专属中转站」,承接所有交互请求 🚀

核心价值

它能统一接管前端页面渲染、各类 API 接口请求,一站式搞定请求校验、逻辑调度、响应数据组装,全程自动化处理 ⚡

最核心的好处是彻底解耦前后端代码,告别跨端逻辑混乱、职责纠缠的问题,让请求全链路标准化、规范化,接口交互更稳、更快、更好维护 💯

三、整体架构轮廓(再见轮廓)

在整套业务架构里,elpis-core 妥妥的核心中转枢纽!前端发出的每一个请求,都会经过它统一接收、校验、处理、响应,实现全流程闭环管控,不遗漏任何细节 🛡️

框架所有硬核能力,全部由7 大 Loader 自动加载器驱动生效。用户请求会顺着标准化的 Loader 流水线逐层处理,形成一套规范、稳定、高可用的请求执行体系,全程有序不混乱 ✅

3.1 单次 API 请求全生命周期 ♻️

前端任意一次 API 请求,都会经历一套标准化的递进式流程,从接入、校验、业务执行到最终返回结果,全程可控、闭环无死角,完整链路如下 👇 🔗 感谢掘金老哥的图

Plain
                        ┌──────────────────────┐
                        │     HTTP Request     │
                        └──────────┬───────────┘

                        ┌──────────▼───────────┐
                        │ 1.静态资源 & 模板渲染  │
                        │ 2.请求体解析          │
                        └──────────┬───────────┘

                        ┌──────────▼───────────┐
                        │ 全局异常捕获【兜底】   │
                        └──────────┬───────────┘

                        ┌──────────▼───────────┐
                        │ 接口签名校验【防篡改】 │
                        │ 仅拦截 /api/* 路由    │
                        └──────────┬───────────┘

                        ┌──────────▼───────────┐
                        │ 参数 Schema 强校验    │
                        │ 全维度参数合规校验     │
                        └──────────┬───────────┘

                        ┌──────────▼───────────┐
                        │ 路由分发|Router      │
                        │ 接口/页面路由精准匹配  │
                        └──────────┬───────────┘

                        ┌──────────▼───────────────────┐
                        │      控制层|Controller       │
                        │ 参数处理 + 服务调用 + 响应组装 │
                        └──────────┬───────────────────┘

                        ┌──────────▼───────────┐
                        │ 服务层|Service       │
                        │ 核心业务逻辑 & 数据处理│
                        └──────────────────────┘

整条请求链路有着严格的执行优先级:先做安全校验、再进行路由分发、最后执行业务逻辑。三层递进防护,从源头堵住接口漏洞,稳稳保障接口安全与稳定性 🔒

  • 🛡️ 前置拦截层:全局异常兜底、接口签名校验、参数强校验,提前规避绝大多数接口风险,筑牢安全第一道防线

  • 🔁 精准分发层:智能路由匹配,精准区分页面渲染和 API 接口请求,分类处理、互不干扰

  • 🎯 业务落地层:控制器统一调度流转,服务层专注业务实现,各层分工明确、彻底解耦

四、架构分层拆解(分而治之)

elpis-core 的工程目录设计超级规范,全程采用分层解耦的优秀思想!整体拆分为四大核心模块,各模块各司其职、互不耦合,结构清晰到新手也能快速看懂,上手难度直接拉低 👇

四大核心模块超清晰分工:

  • 🚀 应用入口层:项目启动总开关,全权负责框架内核整体初始化

  • ⚙️ 环境配置层:搞定多环境配置隔离、覆盖与适配,适配各类运行场景

  • 🧩 内核核心层:通用基础能力合集,和业务完全解耦,复用性超强

  • 💻 业务应用层:开发者专属编码阵地,只需在这里专注写业务逻辑

下面是完整工程目录,附带每一个文件的核心作用,一目了然 📂: 🔗 感谢掘金老哥的图

Plain
elpis/
├── index.js                          # 应用入口:启动 elpis-core 框架,初始化整体服务
├── config/                           # 多环境统一配置目录
│   ├── config.default.js             # 公共基础配置(所有环境通用)
│   ├── config.local.js               # 本地开发环境配置
│   ├── config.beta.js                # 测试预发环境配置
│   └── config.prod.js                # 线上生产环境配置
├── elpis-core/                       # 框架内核层(纯基础能力,与业务完全解耦)
│   ├── index.js                      # 内核启动入口,统一编排所有内核模块加载顺序
│   ├── env.js                        # 环境变量识别、解析与统一注入
│   └── loader/                       # 七大核心自动加载器(框架核心能力载体)
│       ├── middleware.js             # 全局中间件自动注册与加载
│       ├── router-schema.js         # 参数校验规则自动加载
│       ├── controller.js            # 控制器自动扫描、注册加载
│       ├── service.js               # 业务服务层自动加载
│       ├── config.js                # 多环境配置合并、覆盖加载
│       ├── extend.js                # 全局拓展能力加载
│       └── router.js                # 业务路由自动注册与映射
└── app/                              # 业务开发层(约定式开发,无需手动注册)
  ├── middleware.js                  # 业务中间件顺序编排总入口
  ├── controller/                   # 控制器层:接收请求、参数预处理、服务调用、响应组装
  │   ├── base.js                   # 基础控制器:封装全局公共能力,供业务控制器继承
  │   ├── project.js                # 项目核心业务控制器
  │   └── view.js                   # 页面视图渲染控制器
  ├── service/                      # 服务层:承载核心业务逻辑、数据处理、第三方调用
  │   ├── base.js                   # 基础服务:全局通用能力注入
  │   └── project.js                # 项目自定义业务服务
  ├── middleware/                   # 自定义业务中间件目录
  │   ├── error-handler.js          # 全局异常兜底中间件,统一异常捕获与响应
  │   ├── api-sign-verify.js        # 接口签名校验中间件,防接口篡改、重放攻击
  │   └── api-params-verify.js      # 接口参数 Schema 强校验中间件,保障参数合规性
  ├── router/                       # 路由层:URL 路径与控制器方法映射
  │   ├── project.js
  │   └── view.js
  ├── router-schema/                # 独立参数校验规则库,统一管理接口校验规则
  │   └── project.js
  ├── extend/                       # 应用全局能力拓展,挂载至全局 App 实例
  │   └── logger.js                 # 全局日志能力封装,统一日志输出规范
  └── public/                       # 静态资源与模板文件目录
      ├── output/                   # Nunjucks 编译模板文件
      └── static/                   # 静态资源(CSS、图片、脚本等)

五、全链路逻辑串联(无缝衔接)

单独看单个模块,只能懂局部功能;串起全链路,才能真正吃透整套框架 💡

elpis-core 依靠**6 大核心层级协同****联动**,搭建出一套完整、顺滑的 BFF 运行体系。从请求接入、安全校验、业务执行到最终响应返回,全程闭环流转,每一层职责清晰、互不越界,配合超默契 🤝

5.1 路由层(Router)| 请求调度大门 🚪

作为整个请求链路的第一道关口,统一收纳前端页面、API 所有类型请求。精准匹配 URL 路径与对应控制器方法,给每一个请求分配专属执行逻辑,实现精准分发、不跑偏、不报错 ✅

5.2 中间件层(Middleware)| 安全安检中心 🔐

所有请求想要进入业务逻辑,必须先经过中间件层的「全方位安检」,这是框架接口安全的核心防线,缺一不可!

核心工作:全局异常兜底捕获、接口签名校验(杜绝接口篡改、重放攻击)、参数 Schema 强校验,从源头拦截非法请求,提前规避各类业务风险 🛡️

5.3 控制层(Controller)| 业务调度中枢 🎛️

控制器坚守单一职责原则:只做调度和数据组装,不写核心业务逻辑,分工超级纯粹!

主要负责:接收校验通过的合法请求、预处理请求参数、调用对应业务服务、统一封装标准化响应数据,全程统筹请求流转,是衔接前后业务的核心枢纽 🔗

5.4 服务层(Service)| 业务核心大脑 🧠

服务层是框架的「业务核心大脑」,接收控制器的调用指令,承载所有核心业务逻辑的实现。

日常开发中,自定义业务逻辑、核心数据处理、第三方接口调用、数据聚合加工等核心操作,全部在这里完成,专注业务、高效纯粹 ⚡

5.5 配置层(Config)| 多环境适配底座 ⚙️

采用「通用默认配置 + 环境专属配置」的智能覆盖机制,完美适配本地开发、测试预发、线上生产三大运行环境。

无需修改大量业务代码,一键即可切换运行环境,轻松适配不同场景的差异化配置需求,开发、部署超便捷 ✅

5.6 拓展层(Extend)| 无痛能力拓展 💡

支持给全局 App 实例自定义拓展能力,比如全局日志、通用工具方法、全局变量等,按需拓展、灵活度拉满。

全程不用改动框架内核源码,既保证了内核的纯净稳定,又极大提升了项目的可拓展性和灵活性,适配各类个性化业务需求 🚀

六、总结

总的来说,elpis-core 是一款轻量化、高规范、**超**稳定、强可拓展的 Node.js BFF 内核引擎 🌟

它依托七大 Loader 实现零配置自动加载,靠分层架构实现内核与业务彻底解耦,凭借标准化请求流水线筑牢接口安全防线。整套架构简洁优雅、分工明确,完美适配各类前后端交互场景,是一款超高性价比的轻量 BFF 中间层解决方案 💯

本站搭建特别鸣谢【茂神大佬】