一緒にプロジェクトやってる人がこんなの見つけたーと話していた。
受託のWeb開発とかだとサーバーサイドとの兼ね合いもあり自由にReactを使うとか使って宣言的に出来ず、どうしても命令的にやらざるを得ないことはある。そこで見つけた上記の記事「Stimulus – 受託Web屋に「ちょうどいい」JavaScriptフレームワーク」めちゃめちゃ気になるのでちゃんと読んで理解したい。
このフレームワークはReactみたいに全てを支配するわけではなくて、普通のマークアップに機能を足すものらしい。つまるところ状態はJS側で保持しない。まあ古き良きWeb開発。
今までは、機能を実装するならアコーディオンなら
js-accordion
みたいにクラスをHTMLに振ってquerySelectorAll
してforEach
してそれぞれにnew Accordion
とかして- その中で
.js-accortion_btn
とかをquerySelector
してaddEventListener
でクリックイベントやら登録して…
みたいにやる。
それが、Stimulusだと結構書き味変わってくるっぽい。
data-controller
でHTMLに処理を割り当てる。data-contoller="accortion"
みたいな感じらしい。つまりjs-accordion
って振ってquerySelectorAll
してforEach
してそれぞれにnew Accordion
とかして、と同じ感じかな。data-action
でイベントの登録をする。data-action="click->accordion#open"
みたいな感じらしい。これは、addEventListener
と同じ感じか。data-target
はJS側からDOMを参照する対象を設定する。.js-accortion_btn
とかをquerySelector
するのと同じ感じか。
なるほど。Reactとかだと閉じた世界作れるけど、命令的にやると全てがグローバルにある状況で必死に名前を被らせないように頑張るけど、それをしなくて良くて、Stimulusで繋いでくれるのですね。 そしてDOMの監視してくれるのも良い。後から追加したDOMにアコーディオンの機能付与したかったらその要素だけにnewする必要あるのだけど、それをやってくれるの楽。
サーバーサイド組み込み用のHTMLテンプレートを実装する仕事
と書いてあって、うわーまさにそういうのやる〜〜〜という気持ちになった
ということでこのブログ書くことで理解できた。なるほど過ぎる。これは命令的にやるなら使いたいぞ。
シフトブレインの方のブログもあったので載せておく