Hanami 3.0全面绽放:新增三大特性,默认速度快3倍,还有更多改进!

📅 2026/7/3 18:34:02 👁️ 阅读次数 📝 编程学习
Hanami 3.0全面绽放:新增三大特性,默认速度快3倍,还有更多改进!

1. 一流的邮件发送器

Hanami应用现在集成了邮件发送器,与操作、视图和业务逻辑完美融合。邮件发送器类可描述发送邮件所需信息,作为独立对象可通过Deps混入注入并在任何需要处使用。调用.deliver方法,它会准备邮件头并渲染邮件正文模板。邮件发送器支持多种发送方式,SMTP发送方式开箱即用,测试环境中邮件会存储在内存中。若有特殊需求,可编写自己的发送方式。Hanami Mailer可独立使用,借助成熟的mail gem处理底层邮件操作。

2. 内置国际化支持

现在Hanami内置了i18n支持,安装i18n gem后,会在应用和每个切片中设置独立的翻译后端,并提供translate和localize辅助方法。翻译文件存放在应用或切片的config/i18n/目录下,i18n辅助方法在操作和视图中可用。还提供了本地化支持,localize方法可根据当前语言环境格式化日期和时间。i18n设计为开箱即用,有很多配置选项。

3. 支持Minitest

Hanami一直默认提供RSpec测试环境,现在全新支持Minitest。创建应用时可选择测试框架,选择Minitest后将获得完整测试环境。

4. 默认速度更快

Hanami 3.0速度显著提升,在测试应用中,相同请求在HTTP协议下响应速度几乎快了3倍,内存分配大幅减少。Hanami默认对组件进行缓存,以解析九个组件图并渲染视图的应用操作为例,3.0版本中每个请求内存分配减少了14倍,HTTP吞吐量几乎提高了3倍,尾部延迟大幅下降。还提升了框架关键部分性能,Hanami Action和Hanami View内存分配减少,速度提高。

5. 日志更清晰、更实用

3.0版本对日志进行了优化,开发环境中日志默认彩色显示,SQL语句格式与请求日志匹配,安装rouge gem时会语法高亮显示。SQL语句以:debug级别记录,可通过config.db.log_level调整。可通过HANAMI_LOG_LEVEL环境变量设置日志级别,Hanami保证日志记录器有一致接口,支持结构化日志和标签日志。

6. 资产监控更流畅

hanami assets watch现在能检测新添加和删除的入口点,对静态资产更改做出响应,无需重启监控器。还发布了规范,说明资产打包工具如何与Hanami无缝集成。

7. Hanami Action支持请求体解析

Hanami的请求体解析功能从中间件移至Hanami Action,由formats配置驱动。多部分表单和JSON的解析器开箱即用,可注册自己的解析器。

8. 无装饰暴露的简单视图

视图暴露现在默认不进行装饰,模板直接接收暴露的数据。需要装饰时,新的.decorate方法会让暴露的数据更突出,也可通过config.decorate_exposures = true恢复旧行为。

9. 更简洁的基础架构

hanami - controller更名为hanami - action,hanami - validations已停用,Hanami Action直接使用dry - validation处理操作参数和契约。Hanami 3.0要求使用Ruby 3.3或更高版本,这些改变使框架组件更少,gem名称更清晰,更容易上手。

10. 还有更多改进!

3.0版本进行了许多小改进,如新增生成器、支持更多选项、路由器新增重定向辅助方法等,还有全新的欢迎界面。

11. 立即试用

只需几个命令即可创建新的Hanami 3.0应用,欢迎在论坛或聊天群中交流使用体验。

12. 从2.3版本升级

若已使用2.3版本,可参考3.0升级说明完成升级。

13. 感谢贡献者!

感谢所有为这个版本做出贡献的人,包括Aaron Allen、Adam Lassek等。

14. 感谢赞助商!

这个版本的进步离不开赞助商的支持,感谢企业赞助商Sidekiq、Brandon Weaver等,也感谢通过GitHub Sponsors和Open Collective支持Hanakai的个人。欢迎成为赞助商。