Hanami,为什么:一个系列的引入
来源: aaronmallen.me
概述
Aaron Allen 用 Hanami 搭了自己的博客后端,并借此开启“Hanami, Why?”系列。他先梳理 Hanami 与 Rails 的关键差异:它推动你把应用拆成微小的单一职责抽象。
核心要点
- 作者从“被 Rails 的固定做法困住”出发,最终在 RubyConf 2024 上真正接触 Hanami,如今是 Hanakai 团队的维护者。
- Hanami 的四个核心抽象是 Actions(HTTP 端点)、Relations(查询数据库)、Repos(返回 structs 的可选高层)与 Operations(命令模式)。
- 一组简单的 CRUD 会被拆到四个类里,作者认为这正是它更容易扩展的地方,后续会专文解释。
- 借助 dry-system 的 Deps 模块可以自动注入依赖实例,让类的依赖关系变得显式。
- dry-types 提供健壮的类型系统用于校验与规范化用户输入,dry-monads 让 action 与 operation 都能返回 Success/Failure 并用模式匹配处理。
- 示例中 action 只负责参数声明与 HTTP 逻辑:成功渲染 JSON,失败返回 unprocessable_entity。
- 作者还用这套框架做了跨平台发布、私人日志、自建分析、留言后端与同步 Linear/GitHub 的任务管理器。
金句
action 的唯一职责就是处理 HTTP 逻辑。
👍 0
👎 0
← 返回 Lobsters 首页