質問: 現在既存のアプリがあり、機能追加を任されております。 手探りでやり始めるより大枠を掴んでから取り掛かった方が後々楽になると考えており、アドバイスをいただければ有難いです。 追加機能は「タグ」機能です。 もともと各ユーザーが持つ住所や名前が入ったプロフィールカードに、タグを3つ、4つ加えた新しいプロフィールカードを作成することになりました。 ***現状*** フロント) 【Vue.js】component化されたprofile.vueがajaxでuser_idをサーバーサイドへ投げ、データを取得、バインド サーバーサイド) 【Laravel】 ProfileController@showがidを受け取り、紐付けされたユーザーの名前、住所などを検索、VueJSへ送信 ***悩み*** 手順を含め、ずばりどのような仕組みで追加設計を行うか 具体的には、そもそも送信していたプロフィール関連のデータ「+α」のTagデータをどのようにフロントに追加するか ***草案*** 1. TagsServiceというサービスクラスで関連データを整理取得し、ProfileControllerに注入する方法 2. 新たにTagsControllerをつくり、VueJsでAjaxを2回行う方法 ※2. に関しては下記のような方法になります。 ``` // Profile.vue ``` 草案として上記2つを考えておりますが、ほかに良い方法がありますでしょうか。 初心者のため、これくらいしか思いつきませんでした。。。 またこの2つでやりくり出来そうであれば、その旨をお知らせいただきたい事に加え、方法1 or 2(フロントからリクエストを送る(加えてTagControllerを用意する)のか、サーバーサイドでサービスクラスを一つ設けるのがいいのか)どちらがベターなのかをお知らせいただければ幸いです。 長文になりますが、何卒よろしくお願い申し上げます。
回答: 2でやる場合は、例でcreatedで2回ajaxでデータを取ってきているところは、順番に戻りの値の受け渡し等が必要なさそうなので、Promise.allやajax通信ライブラリに準備された方法で並列処理にするとajax処理の待ち時間が少なくなります。 MDN Promise JavaScriptのPromise 設計としては、既存アプリケーションの機能拡張ということで、現状の他プログラムが1、2のどちらの作りに寄せているかに合わせて改修すれば引き継ぎなどのプロジェクトとしての保守性が高く保てると思います。 タグ情報が、プロフィールカードに密なデータであれば、1の方法でやるほうがAPIの戻り値やVue.js側での繰り返し処理でのデータ取扱が自然にやり取りできるかと思います