ここに記載している内容は2018年に書かれたThe Origin of Stimulus (Stimulusの始まり)を参照し、私の経験で少し補足したものです。
- Controller: Actionから指令を受け、処理をし、結果をTargetに出力するもの。全体をまとめます
- Action: ブラウザのイベントを受け取り、適切なControllerの適切なメソッドを呼び出すもの
- Target: Controllerから参照されるもの。通常はControllerで処理された結果がtargetに反映・出力されますが、Controllerがtargetの状態を読み出すこともあります
- Stimulusは通常はHTMLを生成しません
- Stimulusはサーバが生成した既存のHTMLに繋がれ、そのHTMLを変更します
- CSSクラスの追加・削除(HTML要素の表示・非表示やアニメーション等を制御します)
- HTML要素の並べ替え
- HTML要素のコンテンツ(テキスト等)の変更
- もちろん新しいDOM要素を作ったりすることもできますが、このようなケースは少数です
補足: もちろんステートをURL, cookie, localStorage, window
オブジェクトやStimulus Controllerのインスタンス変数等に持たせることはできます。Reactと異なり「ステートはこう管理すべき」というのがないだけです。とはいえStimulusでは一般的にステートをHTML要素に持たせます。それは上述のように変更を受けたHTMLそのものであったり、あるいはStimulus Controllerのインスタンス変数にバインディングされたValuesだったりします。