Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Stimulusのススメ

patorash
January 20, 2021

 Stimulusのススメ

Railsと相性のいいJavaScriptライブラリStimulusの紹介。
サンプルコードはこちらに置いてます。
https://github.com/patorash/stimulus-sample

patorash

January 20, 2021
Tweet

More Decks by patorash

Other Decks in Programming

Transcript

  1. Stimulusとは︖ ­ Railsを開発したDHHのいる会社のBaseCampが開発したJavaScriptのライブラリ ­ Turbolinksとの親和性が⾼い ­ rails-ujsとの親和性も⾼い ­ RailsでReactやVueを使おうとすると、Viewのレンダリングの責務が分離できない。 ­

    RailsをAPIモードにすれば話は別だが… ­ StimulusはViewのレンダリングは完全にRailsに任せる。 ­ 状態の保持はhtmlのdata属性を⽤いる。 ­ 2020年12⽉にバージョン2.0.0がリリース︕ ­ Value APIとClass APIの追加で、さらに扱いやすくなった
  2. メリット ­ Viewのレンダリングに対する責務を完全にRailsに任せられる ­ ということは、Railsのヘルパーメソッドが使える ­ ページのキャッシュ等をTurbolinksに任せられる ­ Ajaxをするのにフォームヘルパーとrails-ujsを使ってのハンドリングが簡単 ­

    ということは、RailsのCSRFトークンも⼀緒に扱える ­ Axiosなどのサードパーティのライブラリを使うとRailsのCSRFトークンの抽出処理が必要に… ­ 学習コストが低い ­ 複雑なことはできない ­ 少⼈数でバックエンド + フロントエンドをやる場合には、有利に働く
  3. デメリット ­ 昨今のフロントエンド重視の開発体制からは逆⾏している(とも受け取れる) ­ 動的な要素追加などは苦⼿ ­ AjaxでRailsにhtmlをもらいに⾏ってくる形になる ­ バックエンドと密結合となる ­

    Viewを返すのがバックエンドの仕事になるから ­ SPAの場合はデータ(JSON)を返すのがバックエンドの仕事 ­ Railsでは裁ききれない︕Go⾔語に移⾏したい︕となっても、密結合しているので移⾏が厳しい。 ­ フロントがSPAならば、バックエンドのAPIサーバを他の⾔語に置き換えやすい ­ しかし、本当にそんなことになることは、弊社であり得るのか︖