laravelでAPI作って、フロントはvue.js+axios(非同期なajax)で、SPAなCRUDアプリを作ってみた(前編)

laravelでAPI作って、フロントはvue.js+axios(非同期なajax)で、SPAなCRUDアプリを作ってみた(前編)

参考URL:
https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2

1, laravel本体をインストール。laravel/uiでvueをインストール
2, SPAのために、vue-routerをインストール
3, どんなURLでも、同じページ(app.blade.php)に行くようにルーティングを指定する。
4, コンポーネント(vueの画面パーツ)は、resources/js/components/フォルダにガンガン作っていく
共通ヘッダ・一覧・詳細・更新・新規作成の画面(ハリボテ状態)
5, DB設定はMySQLではなくSQLite
6, laravelでCRUDなREST APIを作る
7, ハリボテだった画面コンポーネントからAPIをaxios(ajax)経由でコールする。

作ってみた感想としては、削除は画面遷移しないのでスムーズだけど、それ以外は対して変わらない(一覧表示とか遅い)
リアルタイムチャットみたいにサーバプッシュな処理がないと、有り難みないな~。

1, laravel本体をインストール。laravel/uiでvueをインストール
2, SPAのために、vue-routerをインストール

/public/js/app.jsと/public/css/app.cssが生成される。
git管理外にするために、.gitignoreに記述しておく
/public/js
/public/css

この時点では下準備(パッケージのインストール)が整っただけで、ブラウザの見た目は何も変わっていない。
php artisan serve
ここからVue-RouterでSPAを作る。

3, どんなURLでも、同じページ(app.blade.php)に行くようにルーティングを指定する。
最初からあるExample Componentを表示する。

SPAとなる、resources/view/app.blade.phpを作成

http://127.0.0.1:8000/abc など適当なURLを入力しても、404エラーにならず、全て同じ表示になる。

4, コンポーネント(vueの画面パーツ)は、resources/js/components/フォルダにガンガン作っていく
ExampleComponent.vueだけ最初からある。

共有ヘッダ(HeaderComponent.vue)

ブラウザ画面に表示させるには
resources/js/app.jsにimportする

npm run devするか、npm run watchしっぱなしで、リビルドするとブラウザ表示が変わってヘッダ・コンポーネントが表示される。

メイン部分のコンポーネント作成
resources/js/components/TaskListComponent.vue

作成したメイン部分のコンポーネントとvue-routerをインポートする
resources/js/app.js

app.blade.phpで、vue-routerの表示部分となるを追記(ここがURLパスで切り替わる)

これで /tasks だけはタスク一覧が表示されるようになった。
http://localhost:8000/tasks

ヘッダボタンのリンクを作っておく
resources/js/components/HeaderComponent.vue

タスクの詳細ページのコンポーネントを作成

Vue-Routerに追記
resources/js/app.js

詳細画面がブラウザ表示されるようになる。
http://localhost:8000/tasks/3

タスク一覧画面の詳細ボタンのリンクを修正
resources/js/components/TaskListComponent.vue

登録・修正のWebフォームだけ作って、中身の処理は無し!

タスク登録コンポーネント
resources/js/components/TaskCreateComponent.vue

app.jsにルーティング追加

共通ヘッダに作成画面へのリンクボタン

タスク編集画面も作っておく
resources/js/components/TaskEditComponent.vue

app.jsにルーティング追加

ボタン表示部分も修正。

長くなってきたので、後編へ~。