試し

Web

エックスサーバー上でReactとLaravelを使ってみる

先日エックスサーバーの新サーバ簡単移行を行い、スペックがあがりました。折角なのでフロントエンドはRaectを、バックエンドではLaravelを使い、api経由でデータベースや認証を行うアプリを作ってみることに。※ページが長くなるので、このページにコードは出てきません。最終的には、Reactnpm run buildし、distに生成されたファイルをサブドメインで作られたフォルダにアップロードします。そして、そこからブラウザを通して、バックエンドを操作します。バージョンは以下です。

Node 20.9.0
npm 10.9.0
React 18.3.1
Laravel 11

サーバーのディレクトリ構成

サーバーのディレクトリ構成は以下のとおり。フロントエンドからfetchapi folder/backend folder/public/api/~を指定し、バックエンドのapi.phpとやり取りし、jsonを返します。

Laravel
 - backend project file
public_html
 - frontend project file
  -api folder (シンボリックリンクでbackend project file/publicへ)
  -assets folder
  -images folder
  -index.html
  -fovicon.svg

リンク集をアプリ化する

リンク集を作って、アプリとして動かすことを目的にしました。よくあるTODOアプリのような感じです。内容は全然複雑じゃありません。機能としては、認証(サインアップ・サインイン・パスワードリセット)、ユーザー情報のCRUDリンク情報のCRUDリンク情報の一括上げ下げ(アップロード・ダウンロード)の実装。付随して、ファイルのドラッグアンドドロップやページネーション処理を盛り込むことに。

苦労したこと

フロントエンドは参考サイトを元に作成したので、それほど苦労しませんでしたが、バックエンド側では困難に直面し、apiを通して通信されているのか、動かない原因がわかりませんでした。どこでエラーが起きているのか、無反応の場合も多いのが理由。Logを入れたり、try catchを使ったりとバックエンドでエラーハンドリングする重要性を感じました。

興味深かったこと

逆に、興味深かったことはReactの挙動。下記を参考に実装したchakraUItoastの動きが面白かった。これまで管理画面側をつくることはほぼ無かったので、色々なギミックがあるんだと勉強になりました。※useEffectで無限ループが起きると、toastが壊れるんじゃないかと思うほど動いていたのは驚きです。

[React]チュートリアル 学習記録アプリ 1|bauhaus
今回の記事は、以下の記事をモチーフに作成した学習記録アプリのチュートリアルです。 【2024年最新版】0からReactを…

また、ページ読み込みがないSPAの特徴なんでしょうが、即座にサーバーのデータが反映されるのが良いですね。良いと言えば、broadcastChannelも面白いです。ブラウザの別タブ間で情報を反映させる仕組みですが、リンクを加えたり、移動させると別タブの表示画面に反映されるのが気持ち良いなと。ただ、Safariだと動きませんでした。なんだろう、書き方なのかな。

ブロードキャストチャンネル API - Web API | MDN
ブロードキャストチャンネル API (Broadcast Channel API) を使用すると、同じオリジンの閲覧コン…

完成アプリ

現在もまだ、databaseを度々php artisan migrate:freshしているので登録しても無意味ですが、下記のような感じです。Node.jsを使わずに、エックスサーバー上でReactLaravelを使ってアプリが動くことがわかりました。

Link Convenience
ジャンル毎にリンクを登録し、簡単に整理できるアプリです。

ユーザー毎のリンク集の画面。

Link Convenience
ジャンル毎にリンクを登録し、簡単に整理できるアプリです。

コメント