Hasty Briefsbeta

双语

Structuring large Clojure codebases with Biff

10 months ago
  • #Web Development
  • #Clojure
  • #Database Optimization
  • Jacob O'Bryant正在从头重写阅读应用Yakread,并将其开源。
  • 他正在为Clojure网络框架Biff试验新功能,以管理更大的代码库。
  • 旧版Yakread存在查询缓慢问题,例如加载订阅数据需要10秒以上。
  • 通过为XTDB实现物化视图(存储在RocksDB中),避免了传统的反规范化处理。
  • 物化视图使用纯'反规范化器'函数实现数据的增量更新。
  • 采用基于属性的测试和验证物化视图的预言函数,简化了测试流程。
  • 新版Yakread所有应用代码均为纯函数,单元测试中无需模拟对象。
  • 函数被设计为状态机结构,将纯逻辑与副作用处理分离。
  • 副作用处理集中化且保持简洁,提升了可测试性和可观测性。
  • 单元测试通过对比函数输出与预存的EDN文件来验证,使测试更便捷。
  • 代码库使用Pathom解析器分离模型和视图代码,类似OOP但基于纯数据。
  • Pathom解析器处理数据库查询、派生数据甚至UI片段,保持代码模块化。
  • GET请求处理器定义Pathom查询,简化后端逻辑并提升清晰度。
  • 该方法类似Fulcro,但针对htmx的服务器端渲染进行了适配。
  • Yakread的重写仍在进行,计划将成功实验整合到Biff框架中。