【elpis专栏】里程碑一:elpis-core 引擎的理解

elpis-core 引擎的理解

elpis-core 引擎------nodejs 服务框架,属于 BFF 层,主要作用于 页面 与 服务端 中间的交互处理(例如:请求参数校验,请求日志记录,接口汇总分发等)

  • 目标:
    • 规范的文件目录
    • 通过服务引擎中的解析器ElpisKoa(各种 loader),对文件进行解析 (引擎核心)
    • 进入到运行时
      • 任务:通过解析器 ElpisKoa,实现运行时的流程【接受各种请求(api/页面),经历各种中间件,处理各种 controller、service,响应客户端的请求】。

具体说明 运行时

  • koa 的洋葱圈模型

    • 原则:先入后出
    • 举例流程:
      • 页面请求-〉进入路由分发-〉进入洋葱圈(中间件),顺序执行-〉业务逻辑处理-〉调用对应的controller(如SSR)-〉再次进入洋葱圈,执行中间件-〉渲染响应页面
  • 项目分为三层

    • 展示层
    • BFF层(不仅做转发,还要做数据层的消费与交互,和前端的交互)
      • 1: 接入层:路由分发、路由各种校验、路由中间件
      • 2: 业务层:controller处理器(业务、service 调用)、env环境分发、config提取、extend服务拓展、schedule定时任务
      • 3: 服务层:service 处理器
    • 数据层
      • 数据库、缓存、文件存储、日志、外部服务等
  • BFF 层作用

    • 1️⃣ 可以解耦展示层和后端接口
      • 后端只需要关注业务逻辑(提供原子性的接口),无需关注页面展示逻辑
      • 具体的展示逻辑,由前端在 BFF 层实现(增加字段、接口)
    • 2️⃣ 可以将后端的接口都收拢到 BFF 层,进行汇聚处理
      • 列如:某个页面需要依赖多接口,可以由 BFF 统一为页面提供一个接口,对外分发
      • 优点:经过这样处理后,外网 到 内网 的请求,时间会缩短,有效提升系统的整体性能
        • 默认请求流程:页面请求 ➡️ 解析域名 ➡️ 创建链接 ➡️ DNS节点的寻找 ➡️ 去到服务端的网关 ➡️ 负载均衡、防火墙 ➡️ 具体的服务节点
        • 优化后的流程:只保留了展示端与 BFF 层的交互,BFF 层与后端属于 服务对服务的交互(直接指到ip/端口),会极大的节省请求时间,性能得到提升。【具体来说,如有一个页面需要请求100个接口,那就需要走100次从外网到内网的过程;而将100个接口,放到 BFF 中去做转发,我们只需要走1次从外网到内网的过程,其余均是服务对服务的交互,在集群内完成。】
        • 同时,这样的操作,也会绕开浏览器对同一域名下,请求的并发上限。
    • 3️⃣ 可以将签名、密钥放在 BFF 层进行管理,可以更好的保护目标 API 服务器
    • 4️⃣ 具备 SSR 的能力,对比无 BFF 层,前端的灵活性更高(前端可自己实现,而无需挂到Nginx,后续有变化也不会增加后端工作)
  • 库/文档 记录

引用: 抖音"哲玄前端"《大前端全栈实践》

相关推荐
Direction_Wind1 小时前
抖音视频下载,直播间监控,直播间发言采集,最新加密算法
python·node.js
奶糖的次元空间15 小时前
带你用 Javascript 生成器玩转「会暂停」的函数
node.js
Hilaku1 天前
我是如何用一行 JS 代码,让你的浏览器内存瞬间崩溃的?
前端·javascript·node.js
五仁火烧1 天前
npm run build命令详解
前端·vue.js·npm·node.js
前端付豪1 天前
NodeJs 做了什么 Fundamentals Internals
前端·开源·node.js
局外人LZ1 天前
libsodium.js:web端与 Node.js 的现代加密工具集,构建前端安全加密体系
前端·javascript·node.js
寂夜了无痕1 天前
pnpm:快速、节省空间的 Node.js 包管理器
npm·node.js·pnpm
程序员爱钓鱼1 天前
Node.js 博客系统实战(一):项目需求分析
前端·后端·node.js
Jing_Rainbow2 天前
【Vue-2/Lesson62(2025-12-10)】模块化与 Node.js HTTP 服务器开发详解🧩
前端·vue.js·node.js
TE-茶叶蛋2 天前
NestJS中使用TypeORM
node.js