SPAとMPAって何が違うの?SPAにしたほうがいい?
要件によります。
MPA(Multiple Page Application)
HTTP GETが来たら、リクエストに応じたHTMLを組み上げてブラウザに返す
Rails等のサーバサイドフレームワークで何も考えずに作るとこうなる
https://gyazo.com/4a50606d156fe85dc3e85efbc02d597f
SPA(Single Page Application)
レンダリングはブラウザ側のJSで行うやり方
初回リクエスト以降の通信はAjaxでのJSONのやり取りのみとなる
https://gyazo.com/b77564999bd1e1b7a4d979134bf021b8
図ではHTTPサーバとAPIサーバを分けているが、Rails等のフレームワークを使っているのであれば、どちらもRailsとなる。
サーバサイドフレームワークはテンプレートエンジン機能を使わずに、APIを提供することに専念する、というイメージ
必然的にサーバサイドでやることは少なくなる
SPAで行くべきかMPAで行くべきか
今までMPAで作ってきたのであれば、そのままMPAで作るで良いと思う
サーバ側をあまり沢山書きたくないなという気分であれば、SPAを採用すると良い
SPAで行くと決めたのであれば、vue-cliやvue-routerを使うとすごく便利
双方にメリット・デメリットは沢山あるが、ユーザにとっては大差ない。「自分の問題を解決してくれる方」を選ぶべき。