1245 字
约 4 分钟
4
什么时候抽「纯逻辑层」

什么时候抽「纯逻辑层」:一个放之各端皆准的架构判断

主题:在什么样的业务场景下,该把一段逻辑抽成"跨端、无环境依赖的纯逻辑层"(本项目里就是 src/core)? 面向:架构选型时想知道"这段代码是放 ui/后端,还是单独抽一层"的人。


一、先定义"纯逻辑层"是什么

纯逻辑层 = 一段"输入 → 纯计算 → 输出"、不依赖任何外部环境的函数集合。

它同时满足三条"不碰":

  • 不碰 DOM(没有界面)
  • 不碰宿主 API/画布(不操作 Figma、浏览器、系统)
  • 不碰 IO(不发网络请求、不读写文件)

正因为啥都不碰,所以它各端都能 import(前端能引、后端能引、插件能引),也最好测试(丢一个输入看输出对不对)。

一句话:它是"唯一的规则源",谁要这套规则,谁就 import 它。


二、什么时候该抽:(三条件 + 判别表)

核心判断 —— 三个条件尽量都满足才值当

条件 说人话 反例(不满足)
多处复用 好几块代码都要用它 只有一处在用 → 先放着,别过度设计
纯计算 只算,不碰外头 要联网/碰画布/写文件 → 不该放纯逻辑层
多端都能用 UI 与 Server(或插件)都可能引 只服务单一入口 → 可考虑收进那处内部

判别表(对候选逻辑块逐项打勾)

□ 不止一个端 / 不止一处要用它?            (复用)
□ 它只做"输入→算→输出",不碰网络/画布/文件? (纯计算)
□ 前端要先挡 + 后端要再挡,或需多入口共享?   (双端/多端)
□ 改一次规则希望全局生效,而不是改 N 处?    (单一真相源)
命中 ≥3 项 → 抽成纯逻辑层,准没错

三、多个业务场景(5 个不同行业)

场景① 电商计价

  • 纯逻辑段price = (subtotal - discount) × (1+taxRate) + shipping(distance, weight)
  • 为什么抽:前端要实时预览价;后端下单前要再算一次防篡改 → 两处必须同规则。纯计算 → 抽 pricing/ 共用。
  • 不抽的痛:前端一套、后端一套,改优惠规则要改两处,还容易前后端价格对不上。

场景② 金融风控 / 审批

  • 纯逻辑段eligible = score(salary, history, debt) >= threshold && policyChecks.all()
  • 为什么抽:报名页要预检给即时反馈;后端正式审批要同规则。纯规则 → 抽 eligibility-rules/
  • 不抽的痛:政策一调整,前后端两套都改 → 出现"前端说能过、后端说过不了"的打架。

场景③ 文档 / 模板渲染

  • 纯逻辑段render(template, data) -> document(含字段校验、转义、格式化)。
  • 为什么抽:保存草稿、正式下载、邮件通知都要同一套渲染。纯函数 → 抽 render-core/
  • 不抽的痛:每处各写一套 → 模板格式一变,遍地要改,且渲染结果不一致。

场景④ 订票 / 库存

  • 纯逻辑段canBook(seatState, held, capacity)remainingCount(...)(座位/库存状态运算)。
  • 为什么抽:前端选座时即时判断;后端锁座时强校验。纯内存运算 → 抽 seat-allocation/
  • 不抽的痛:前端能点、后端报错,或两处算的"剩余"不一致。

场景⑤ AI / 多模型编排(和"图→切图"项目最像)

  • 纯逻辑段buildPrompt(task, params) -> textparseModelOutput(text) -> structuredvalidateInput(...)
  • 为什么抽:Server 调 AI 要用;UI 预解析/预览也想用同一套。纯字符串/JSON 运算 → 抽 model-contract/
  • 不抽的痛:prompt 改一点 services 遍地翻;"AI 返回格式一变"后端能解析、前端预览却崩。

四、三个反例:什么时候不该

❌ 只有一处用 → 先内聚,不抽(别为架构而架构)
❌ 要碰网络/画布/文件 → 那不是纯逻辑,放 services/plugin/ui
❌ 规则几乎不变 → 抽一层反而是过度设计

五、一句话总结

"同一套规则要跨多端复用、且是纯计算" → 值得抽成纯逻辑层当唯一规则源,前端后端都 import 它:改一处全生效、最容易测试、跨端一致。命中 ≥3 项判别条件就用,命中太少就先别抽。


六、关联

  • 通用:双线程架构通用笔记缓存失效与改了就更新AI生图切图补齐导出全流程
  • 本项目实例:src/core/(ai-image-dimensions、slice-detection、background-decomposition 三套"校验+prompt+解析")
什么时候抽「纯逻辑层」
http://www.clxhxhhr.top/posts/547/
作者
clxstart
发布于
2026-09-08
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。