建真實應用:Turbo Frames、Turbo Streams與Stimulus控制器完整指南)
【免費下載鏈接】hotwire-railsUse Hotwire in your Ruby on Rails app項目地址https://gitcode.com/gh_mirrors/ho/hotwire-rails點擊查看免費下載hotwire-rails 是 Ruby on Rails 生態(tài)中用于聚合 Hotwire 兩大核心組件 Turbo 與 Stimulus 的 gem讓你無需編寫大量 JavaScript就能讓傳統(tǒng) Rails 應用擁有接近單頁應用SPA的流暢體驗。本文面向新手完整講解 Turbo Frames、Turbo Streams 與 Stimulus 控制器的安裝與用法。1分鐘看懂 hotwire-rails 是干什么的 Hotwire 的理念是“HTML over the wire”HTML 走網(wǎng)線服務器發(fā)送 HTML 片段瀏覽器做最小化局部更新。它由兩部分組成Turbo由turbo-rails提供接管頁面跳轉(zhuǎn)、表單提交實現(xiàn)局部刷新Stimulus由stimulus-rails提供輕量的 JavaScript 框架用數(shù)據(jù)屬性把行為掛到 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功能完全一致本文用法同樣適用??焖侔惭b3 步跑通 Hotwire第 1 步聲明依賴在 Gemfile 中加入gem hotwire-rails第 2 步安裝 gembundle install第 3 步執(zhí)行安裝命令rails generate hotwire:install該任務定義在 lib/tasks/hotwire_tasks.rake 中內(nèi)部串聯(lián)了stimulus:install與turbo:install會自動完成 JS 資源、視圖 helper 等全部引入。若使用較新的獨立安裝方式則分別運行rails generate turbo:install和rails generate stimulus:install即可。Turbo Frames局部刷新頁面不再整頁重載Turbo Frame 允許把頁面的一部分包進turbo-frame容器導航或刷新時只重載 frame 內(nèi)的內(nèi)容。1. 在視圖中用 frame 包裹局部內(nèi)容% turbo_frame_tag cart do % % render partials/cart % % end %2. 服務器只返回該 frame 對應的片段當請求指向#cart時Rails 只需返回對應局部模板的 HTMLTurbo 會自動替換到正確位置。典型使用場景側(cè)邊欄購物車只有購物車區(qū)域刷新頁面狀態(tài)滾動位置、焦點完整保留分頁列表翻頁只更新列表區(qū)域同頁多端適配移動端與桌面端加載不同局部內(nèi)容核心優(yōu)勢一行 JavaScript 都不用寫。Turbo Streams服務器推送“補丁”頁面實時更新 Turbo Streams 相當于 HTML 的“遠程補丁”服務器返回一系列turbo-stream指令瀏覽器執(zhí)行后精準更新對應元素。支持 5 種操作操作效果append追加到末尾prepend插入到開頭replace整體替換元素update更新元素內(nèi)部 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只要某個用戶觸發(fā)了turbo_stream渲染所有訂閱了同一頻道、打開同一頁面的用戶都會收到并應用這塊“補丁”——這正是實時評論區(qū)、實時排行榜的實現(xiàn)原理。Stimulus給 HTML 加上“剛剛好”的 JavaScriptStimulus 用數(shù)據(jù)屬性把行為綁定到元素上避免龐大的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點擊查看免費下載相關(guān)推薦從 Hotwire / Turbo 遷移到 htmxTurbo Drive、Turbo Frames、Turbo Streams 與 Stimulus 的等價實現(xiàn)指南從 Hotwire / Turbo 遷移到 htmxTurbo Drive、Turbo Frames、Turbo Streams 與 Stimulus 的等價前端Web框架Claude Code 反饋記憶保存指南何時記錄用戶糾正與確認讓 Agent 在后續(xù)對話中保持一致Claude Code 反饋記憶保存指南何時記錄用戶糾正與確認讓 Agent 在后續(xù)對話中保持一致 本文圍繞 Claude Code 系統(tǒng)提示中的反饋記憶NixOS fileSystems 選項詳解從聲明式掛載配置到 fstab 生成與啟動期掛載NixOS fileSystems 選項詳解從聲明式掛載配置到 fstab 生成與啟動期掛載 在 NixOS 中所有文件系統(tǒng)掛載都通過聲明式的 fileSy上一篇LiteGraph.js CI/CD流程優(yōu)化測試與部署加速下一篇B站視頻下載終極教程三分鐘掌握BiliTools嗶哩嗶哩工具箱創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考