用途:在 Rails 8 项目中使用 Hotwire(HTML Over The Wire),以少量 JavaScript 构建现代交互式 Web 应用。资料将 Hotwire 分为四部分:Turbo Drive 用于类似单页应用的导航,无需额外代码;Turbo Frames 用于局部页面更新,例如内联编辑、标签页内容;Turbo Streams 用于实时 DOM 更新,例如实时消息和 flash 提示;Stimulus 用于少量 JavaScript 交互,例如开关、表单和控件行为。
主要能力与用法:Turbo Frames 通过 turbo_frame_tag 限定更新范围,链接点击只替换该 frame 内内容。Turbo Streams 使用 turbo_stream.prepend、turbo_stream.update 等方法,在服务端返回对应模板实现多区域更新。Stimulus 控制器以 @hotwired/stimulus 的 Controller 为基础,通过 static targets 和 data-action 绑定事件。资料还给出使用场景对照:内联编辑用 Turbo Frame,表单提交用 Turbo Stream,实时信息流用 Turbo Stream 加 ActionCable,显隐切换和表单校验收客户端用 Stimulus,无限滚动用 Turbo Frame 加懒加载,模态框用 Turbo Frame,flash 提示用 Turbo Stream。
工作流程与测试:先确定更新范围(整页还是局部),选择模式,实现服务端响应,添加客户端标记,并测试有 JavaScript 和无 JavaScript 两种情形,编写系统测试。资料提供了 RSpec 系统测试与请求测试示例,以及在请求头中包含 text/vnd.turbo-stream.html 来验证 Turbo Stream 响应。
限制与注意事项:资料提到常见调试点,包括 frame ID 必须完全匹配、Turbo Stream 需要正确的 Accept 头、Stimulus 控制器名需与文件名一致、事件需按 data-action="event->controller#method" 格式书写。除资料给出的内容外,其他细节暂未提供。