kenzo-tanaka / rails_sandbox

Sandbox for Gem
0 stars 0 forks source link

Hotwireを素振り #9

Closed kenzo-tanaka closed 3 years ago

kenzo-tanaka commented 3 years ago

業務で使うかもしれないのでキャッチアップしてみる。

現状の理解度

Hotwireは複数の技術をまとめた概念的なものである。Hotwireを使うことでSPA開発みたいなことをRailsでやるときには、たくさんJSを書かなくて良くなるので負担が減って開発スピードを上げてくれる。 具体的な書き方だったり、ユニークに解決している問題は理解していない(例えば .js.erb でもHTMLの書き換えとかってできるよななどと思ってしまう)のでこのあたりを深く調べていく。

Turbo

TurboがHotwireの心臓である。これによって大量のJSを書かなくてもSPA作れます。 その中でも概念が分かれる感じ。

Turbo: The speed of a single-page web application without having to write any JavaScript.

今自分が調べるべきはDrive,Framesあたりかな。実現したいFormを1画面で完結させる動きみたいなのは、Turbo Frameがそれになりそう。

Turbo Handbookを見てみる。

With Turbo, you let the server deliver HTML directly, which means all the logic for checking permissions, interacting directly with your domain model, and everything else that goes into programming an application can happen more or less exclusively within your favorite programming language. You’re no longer mirroring logic on both sides of a JSON divide. All the logic lives on the server, and the browser deals just with the final HTML.

この辺に作者の思想が出ている気がする。Turboを使えばサーバーがダイレクトのHTMLを返す。フロント・バックエンドを見比べるといった面倒なことをしなくて良くなりますよ。

あれこれってTurbolinksがやっていること?→GitHubを見てみる。

Please note that Turbolinks is no longer under active development. It has been superseded by a new framework called Turbo, which is part of the Hotwire umbrella. turbolinks/turbolinks: Turbolinks makes navigating your web application faster

デモ動画ではJavaScriptは書いていなくて、全て.erbの中に必要なロジックは書かれている。

Turbo Drive gives you that same speed by using the same persistent-process model, but without requiring you to craft your entire application around the paradigm. There’s no client-side router to maintain, there’s no state to carefully manage.

Turbo Driveを使うとSPAが提供するのと同じスピードを実現できる。クライアントサイドのルーティング、ステート管理などをする必要はなくて、全てTurboが面倒を見ますよ。

kenzo-tanaka commented 3 years ago

private repoへ移行。