LoginSignup
2
2

【初心者】Stimulus の使い方

Last updated at Posted at 2021-08-06

#概要
Stimulus の簡単な機能を学習したので記載します。
これからStimulusを学習する方の参考になればと思います。

前提条件としてdockerとrails6で実装しています。
他の方法も一応記載しているので、参考になれば嬉しいです!

#Stimulusとは

Stimulusは、JavaScriptフレームワークです。
StimulusはHTMLを中心に考え、JavaScirptで書かれたHTMLを呼び出すことができるように設計されています。

##基本説明
呼び出すJavaScriptオブジェクトはコントローラーと呼ばれ、StimulusはHTMLデータコントローラー属性が表示されるのを待ってページを継続的に監視します。
Stimulusは、属性ごとに、属性の値を調べて対応するコントローラークラスを見つけ、そのクラスの新しいインスタンスを作成して、それを要素に接続します。

つまり、class属性がHTMLをCSSに接続するブリッジであるように、Stimulusのデータコントローラー属性はHTMLをJavaScriptに接続するものです。

いや、どうゆことやねんって感じなので実際に使っていきます。

#使い方

前提として
① 今回はdockerの環境で開発します。
dockerの環境構築がまだの方は
↓こちら↓を参考にして下さい。
【Docker】Quickstart : Compose and Rails やってみた

②webpackerのインストールが必要な為、rails6で開発します。
rails5の方は以下の方法でwebpackerをインストールしなくても開発できます。
【GitHub】 Stimulus-rails

では開発していきます。

###javascriptファイルに記述

javascript>controllers>hello_controller.jsファイルに
以下を記述します。

javascript>controllers>hello_controller.js

import { Controller } from "stimulus"

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

  greet() {
    this.outputTarget.textContent = `Hello, ${this.nameTarget.value}!`
  }
}

###viewsファイルに記述

views>messages>index.html.erb に以下を記述します。

index.html.erb
<div data-controller="hello">
  <input data-hello-target="name" type="text">

  <button data-action="click->hello#greet">
    Greet
  </button>

  <span data-hello-target="output">
  </span>
</div>

これで準備完了です。
dockerを動かしていきます。

% docker compose up

dockerが動いているのを確認したのでローカルで確認してみます。
http://localhost:3000/

以下のようにテキストを入力できるフォームが表示されました。
スクリーンショット 2021-08-05 15.37.41.png

実際に使ってみます。

スクリーンショット 2021-08-05 15.45.18.png

上記のように入力して**「Greet」**ボタンを押します。

スクリーンショット 2021-08-05 15.47.31.png

右側に**Qiita!**と表示されるようになりました。

これで完了です。
この機能を活用して様々なJavaScriptの動きをHTML上で表示することができます。

今後、他にも様々な機能を実装していこうと思います。

#最後に

stimulusは最近私も知ったJavaScriptのフレームワークです。
使用方法もコントローラーで接続するので比較的簡単です。

前提条件がdocker・rails6だったので、やりづらいかも知れません。
なので、まずは公式ドキュメントを確認してみて下さい。
「STIMULUS 公式ドキュメント」

私もこれから学習していきます。
頑張りましょう!!

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2