
【免费下载链接】hotwire-railsUse Hotwire in your Ruby on Rails app项目地址https://gitcode.com/gh_mirrors/ho/hotwire-rails点击查看免费下载hotwire-rails 是 Ruby on Rails 生态中用于聚合 Hotwire 两大核心组件 Turbo 与 Stimulus 的 gem让你无需编写大量 JavaScript就能让传统 Rails 应用拥有接近单页应用SPA的流畅体验。本文面向新手完整讲解 Turbo Frames、Turbo Streams 与 Stimulus 控制器的安装与用法。1分钟看懂 hotwire-rails 是干什么的 Hotwire 的理念是“HTML over the wire”HTML 走网线服务器发送 HTML 片段浏览器做最小化局部更新。它由两部分组成Turbo由turbo-rails提供接管页面跳转、表单提交实现局部刷新Stimulus由stimulus-rails提供轻量的 JavaScript 框架用数据属性把行为挂到 HTML 元素上hotwire-rails本身的作用是“打包”这两个 gem入口文件 lib/hotwire-rails.rb 会同时引入turbo-rails与stimulus-railshotwire-rails.gemspec 中声明了这三项依赖外加rails 6.0.0。⚠️ 注意官方认为“聚合依赖”价值有限该 gem 已标记Deprecated见 README.md。新项目建议直接引入turbo-rails和stimulus-rails功能完全一致本文用法同样适用。快速安装3 步跑通 Hotwire第 1 步声明依赖在 Gemfile 中加入gem hotwire-rails第 2 步安装 gembundle install第 3 步执行安装命令rails generate hotwire:install该任务定义在 lib/tasks/hotwire_tasks.rake 中内部串联了stimulus:install与turbo:install会自动完成 JS 资源、视图 helper 等全部引入。若使用较新的独立安装方式则分别运行rails generate turbo:install和rails generate stimulus:install即可。Turbo Frames局部刷新页面不再整页重载Turbo Frame 允许把页面的一部分包进turbo-frame容器导航或刷新时只重载 frame 内的内容。1. 在视图中用 frame 包裹局部内容% turbo_frame_tag cart do % % render partials/cart % % end %2. 服务器只返回该 frame 对应的片段当请求指向#cart时Rails 只需返回对应局部模板的 HTMLTurbo 会自动替换到正确位置。典型使用场景侧边栏购物车只有购物车区域刷新页面状态滚动位置、焦点完整保留分页列表翻页只更新列表区域同页多端适配移动端与桌面端加载不同局部内容核心优势一行 JavaScript 都不用写。Turbo Streams服务器推送“补丁”页面实时更新 Turbo Streams 相当于 HTML 的“远程补丁”服务器返回一系列turbo-stream指令浏览器执行后精准更新对应元素。支持 5 种操作操作效果append追加到末尾prepend插入到开头replace整体替换元素update更新元素内部 HTMLremove删除元素1. 控制器中返回 stream 响应def publish article Article.find(params[:id]) article.publish! render turbo_stream: [ turbo_stream.append(articles, partial: articles/article, locals: { article: article }) ] end2. 用 ActionCable 实时广播给所有用户def show article Article.find(params[:id]) stream_from article end只要某个用户触发了turbo_stream渲染所有订阅了同一频道、打开同一页面的用户都会收到并应用这块“补丁”——这正是实时评论区、实时排行榜的实现原理。Stimulus给 HTML 加上“刚刚好”的 JavaScriptStimulus 用数据属性把行为绑定到元素上避免庞大的app.js。1. 生成控制器rails generate stimulus:controller hello2. 控制器代码自动生成于app/javascript/controllers/hello_controller.jsimport { Controller } from hotwired/stimulus export default class extends Controller { connect() { console.log(this.element.dataset.name) } }3. 在 HTML 中声明div>赞分享【免费下载链接】hotwire-railsUse Hotwire in your Ruby on Rails app项目地址https://gitcode.com/gh_mirrors/ho/hotwire-rails点击查看免费下载相关推荐从 Hotwire / Turbo 迁移到 htmxTurbo Drive、Turbo Frames、Turbo Streams 与 Stimulus 的等价实现指南从 Hotwire / Turbo 迁移到 htmxTurbo Drive、Turbo Frames、Turbo Streams 与 Stimulus 的等价前端Web框架Claude Code 反馈记忆保存指南何时记录用户纠正与确认让 Agent 在后续对话中保持一致Claude Code 反馈记忆保存指南何时记录用户纠正与确认让 Agent 在后续对话中保持一致 本文围绕 Claude Code 系统提示中的反馈记忆NixOS fileSystems 选项详解从声明式挂载配置到 fstab 生成与启动期挂载NixOS fileSystems 选项详解从声明式挂载配置到 fstab 生成与启动期挂载 在 NixOS 中所有文件系统挂载都通过声明式的 fileSy上一篇LiteGraph.js CI/CD流程优化测试与部署加速下一篇B站视频下载终极教程三分钟掌握BiliTools哔哩哔哩工具箱创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考