」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Stimulus.js 和 JavaScript 整合增強您的 Rails pp

使用 Stimulus.js 和 JavaScript 整合增強您的 Rails pp

發佈於2024-07-31
瀏覽:330

Enhance Your Rails pp with Stimulus.js and JavaScript Integration

使用 Stimulus.js 和 JavaScript 整合增強您的 Rails 7 應用程式

Stimulus.js 是一個簡單的 JavaScript 框架,可以增強您的 HTML。它是 Rails 內建功能的完美伴侶。在這篇文章中,我們將探討如何使用 Stimulus.js 實現 JavaScript 功能,將其與其他 JavaScript 程式庫集成,以及使用 Importmap 有效管理 JavaScript 依賴項。

先決條件

在我們開始之前,請確保您具備以下條件:

  • Rails 7 應用程式設定
  • JavaScript與Rails基礎知識

在 Rails 7 中設定 Stimulus.js

Rails 7 預設支援 Stimulus.js。首先,透過執行以下命令確保 Stimulus 包含在您的應用程式中:

rails new my_app
cd my_app

您可以在 app/javascript/controllers 中找到 Stimulus 控制器。

創建刺激控制器

讓我們建立一個 Stimulus 控制器來處理簡單的點擊事件。執行以下命令:

rails generate stimulus hello

這將在 app/javascript/controllers 中產生一個新的控制器 hello_controller.js。開啟檔案並新增以下程式碼:

// app/javascript/controllers/hello_controller.js
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static targets = ["output"]

  connect() {
    this.outputTarget.textContent = 'Hello, Stimulus!'
  }

  greet() {
    this.outputTarget.textContent = 'Hello, World!'
  }
}

在 HTML 中,使用 Stimulus 控制器:

按一下按鈕時,文字將變更為「Hello, World!」。

與其他 JavaScript 庫集成

Stimulus.js 可以與其他 JavaScript 函式庫無縫協作。例如,讓我們將 jQuery 與 Stimulus.js 整合。

首先,使用Importmap加入jQuery:

將 jQuery 加入您的 config/importmap.rb:

pin "jquery", to: "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"

然後,在您的 Stimulus 控制器中匯入 jQuery:

// app/javascript/controllers/hello_controller.js
import { Controller } from "@hotwired/stimulus"
import $ from "jquery"

export default class extends Controller {
  static targets = ["output"]

  connect() {
    this.outputTarget.textContent = 'Hello, Stimulus!'
  }

  greet() {
    $(this.outputTarget).fadeOut().fadeIn().text('Hello, jQuery!')
  }
}

管理 JavaScript 依賴關係

使用 Importmap 管理 Rails 7 中的 JavaScript 依賴關係非常簡單。這裡有一些提示:

  • 新增庫: 在 config/importmap.rb 中使用 pin "library_name", to: "library_url" 新增函式庫。
  • 刪除庫: 從 config/importmap.rb 中刪除對應行以刪除現有庫。
  • 更新庫:將config/importmap.rb中的URL更新為最新版本。
  • 檢查過時的庫:訪問 config/importmap.rb 中的 URL 以查看是否有新版本可用。

您也可以將自訂 JavaScript 檔案新增至您的專案。將它們放在 app/javascript 資料夾中並在需要的地方匯入它們。

結論

Stimulus.js 提供了一種強大而簡單的方法來將 JavaScript 功能新增至 Rails 應用程式。透過將其與其他 JavaScript 庫集成,您可以創建豐富且動態的用戶體驗。正確管理您的 JavaScript 依賴項可確保您的應用程式保持可維護性和最新狀態。

編碼愉快!

版本聲明 本文轉載於:https://dev.to/shahzaib/enhance-your-rails-7-app-with-stimulusjs-and-javascript-integration-5clf?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-03-25
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-03-25
  • Numpy的矢量函數如何有效地證明數組的合理性?
    Numpy的矢量函數如何有效地證明數組的合理性?
    使用向量函數 Numpy提供使用矢量化函數的數組合理的方法,提供改進的性能和代碼簡單性,與傳統的python循環相比,提供了改進的性能和代碼簡單性。在保持其形狀的同時,左,右,向上或向下的非零元素。 以下numpy實現執行有效的理由: = a [mask] 別的: out.t...
    程式設計 發佈於2025-03-25
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-03-25
  • 如何基於唯一的電子郵件值合併和重塑對像數組?
    如何基於唯一的電子郵件值合併和重塑對像數組?
    在數據操作領域中合併和將對象的數組與唯一的電子郵件值 考慮需要合併兩個對象陣列,每個對像都包含電子郵件屬性。目標是創建一個包含所有唯一電子郵件值的新數組。 , (對象)[“電子郵件” =>“ [電子郵件  prected]”], (對象)[“電子郵件” =>“ wef...
    程式設計 發佈於2025-03-25
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-03-25
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-03-25
  • 如何在鼠標單擊時編程選擇DIV中的所有文本?
    如何在鼠標單擊時編程選擇DIV中的所有文本?
    在鼠標上選擇div文本單擊帶有文本內容,用戶如何使用單個鼠標單擊單擊div中的整個文本?這允許用戶輕鬆拖放所選的文本或直接複製它。 在單個鼠標上單擊的div元素中選擇文本,您可以使用以下Javascript函數: function selecttext(canduterid){ if(d...
    程式設計 發佈於2025-03-25
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    程式設計 發佈於2025-03-25
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-03-25
  • 如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    在Visual Studio 2012 儘管已安裝了MySQL Connector v.6.5.4,但無法將MySQL數據庫添加到實體框架的“ DataSource對話框”中。為了解決這一問題,至關重要的是要了解MySQL連接器v.6.5.5及以後的6.6.x版本將提供MySQL的官方Visual...
    程式設計 發佈於2025-03-25
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-03-25
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-03-25
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-03-25
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-03-25

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3