【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,后续有变化也不会增加后端工作)
  • 库/文档 记录

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

相关推荐
艾小码13 小时前
Node.js 中的 Gzip 压缩:加速你的 Web 应用传输
性能优化·node.js
BitSmith13 小时前
如何使用Node实现一个简单的chatgpt
node.js
阿虎儿14 小时前
Modern Node.js Patterns for 2025(2025 年现代 Node.js 模式)
javascript·node.js
guidovans1 天前
node.js 零基础入门
node.js·编辑器·vim
Ares-Wang1 天前
Node.js 》》bcryptjs 加密
开发语言·javascript·node.js
太阳伞下的阿呆1 天前
mac安装node.js
macos·node.js
爱敲代码的小旗1 天前
Webpack 5 高性能配置方案
前端·webpack·node.js
kartjim1 天前
2025 年现代 Node.js 模式
前端·javascript·node.js
上单带刀不带妹2 天前
Node.js 中的 fs 模块详解:文件系统操作全掌握
开发语言·javascript·node.js·fs模块
陈陈陈同学242 天前
Vercel迁移到Dokploy自部署,每月立省20刀
后端·node.js