質問するログイン新規登録
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

1130閲覧

Laravel を SPA 化するには?ウェブアプリを改修したいと思っています

ryo_engineer

総合スコア33

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/04/21 11:26

0

0

タイトルにSPA 化するにはと書きましたが、実際にはそれ以前の段階の「どの技術・ライブラリを使用すべきか?」が質問の趣旨となります。

現在、ウェブアプリとして掲示板サービスを運営しています。
いわゆる従来型のMPA(multi page app)なのですが、以下のように変更を加えたいと考えています。

① 投稿をAjax で行う
② 新しい投稿があったら差分のみを取得し画面を自動更新する(WebSocket?)
③ ページ遷移の際にページ全体を更新せずに差分のみ更新する(SPAのような)

上記①~③のように作り直す場合、どのような技術を選定すればよいでしょうか?
調べていると、React, Next.js, SPA, SSR, SSG, など様々なワードが飛び交い、決めあぐねています。

また、①,②は変更範囲がアプリの一部にとどまりますが、③はそれが全体に及びます。
そのため、これは最悪後回しにするか、一部のページのみに適用できればよいと考えています。
ページングのときに差分だけ取得する、検索の際に結果だけ差分として取得するなど。

これらはフロント側での実装になるかと思いますが、開発にあたってはバックエンドとの相性の問題もあるかと思います。
バックエンドでは Laravel 9 を使用しています。
Ajax はいいねボタンなどすでに一部の機能で取り入れていますが、Fetch などの処理をバニラのJS で書いて実装しています。
これも今回の変更に合わせてReact を使うならReact で書き換えるなどしたいと考えています。

①~③の要件を満たすフレームワーク?ライブラリ?はあるのでしょうか。
それとも複数のライブラリを使うことになりますか?
実際の開発ではこのような場合どのような技術選定になるかご教授いただけませんでしょうか。

以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2022/04/21 11:57

文章見たところreactに決めるかそれをやめるかで迷っているように見えますね。 単純にreact使えば望みどおりになりますよ、問題はハードルが高い事です。と言っても一回やればなれるから一度reactで作り直しにチャレンジしてから挫折するようなら再考してみては?
ryo_engineer

2022/04/21 11:58

React は選択肢の一つと考えています。Next.js という選択肢もあると思うのですが、どちらがよいか決めかねています。
hentaiman

2022/04/21 12:08

3日ぐらいreact触って使いこなせるようならnextで良いかと react触ってみて楽勝じゃんって思えばnextでも楽勝だろうけどreact訳分からんってなるならnextやったところでreactの倍以上訳分からんってなるだけです
ryo_engineer

2022/04/21 12:10

ありがとうございます。 websocket も可能ですか?
hentaiman

2022/04/21 12:22

それに対応するjs書けばできますよ websocketなんて面倒だからsseにすれば?とは思いますが
ryo_engineer

2022/04/21 14:15

ありがとうございます。 まず試しにページネーションをページ遷移せずにAjaxで更新したいと思うのですが、これはReactで可能でしょうか? たぶんAxiosを入れて使うことになると思うのですが。 素のJSでFetchでAjaxを書いたことがあるので大体はわかります。 Ajaxで取得した際、URLは変わらないと思うのですが、これをページ遷移と同じように(?page=n)をURLにつけて、かつブラウザの戻るボタンで戻れるようにすることは可能でしょうか? 素のJSでこれを全部実現しようと思えば結構大変だとおもうのですが、Reactを使えば良しなにやってくれるのでしょうか?
hoshi-takanori

2022/04/22 01:31

React でも fetch は使えますので、現在 fetch を使ってるなら axios に切り替える必要はほぼないと思います。 とりあえず既存のページを一つ (掲示板の書き込みを表示する画面とか) 試しに React で書き直してみれば良いのでは。
hentaiman

2022/04/23 01:45

> たぶんAxiosを入れて使うことになると思うのですが。 んなことはないです。自分の場合はcrossfetchかnodefetch入れて使いました。axiosはなんとなく見た感じ嫌いだったので使ってません。 > 素のJSでこれを全部実現しようと思えば結構大変だとおもうのですが、 んな事は無いと思うけど > Reactを使えば良しなにやってくれるのでしょうか? よしなにやってくれるようにする為の下準備は苦労すると思いますがそれが済んでしまえば素のjsより楽かとは思いますが、下準備の苦労よりも素のjsの方が簡単でしょうね。と言っても一度経験すれば済むことですが 回答にあるlivewireなんか全くお勧めする気になれんな。裏の動作を理解した上で使うなら構わんけど
guest

回答1

0

そんな状態からJSの難しいことを覚えてSPA化は無理なのでLivewire使っておけばいい。
https://laravel-livewire.com/
目的は「SPAっぽい動作」であって「Reactを使うこと」じゃないでしょ。

Railsも「JSを使わないSPA」の方向に進んでる。

投稿2022/04/22 03:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryo_engineer

2022/04/22 09:42

ありがとうございます。livewireというのを初めて知りました。これならLaravelの知識でSPAを作れそうです。 Reactなどのフレームワークを使ってSPAを作ることに比べてなんらかのデメリットはありますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問