====== 19.Nuxt.jsで画像一覧アプリ ======
今回は、Vue.jsのフレームワークNuxt.jsを用いて、画像一覧アプリを作成したいと思います。
サーバー側は、あらかじめ用意されているものを用います。
以下のサイトを写経してみたいと思います。
https://luftgarden.work/tut-nuxt-dog-part1/
{{:14.nuxt.jsで画像一覧アプリ:pasted:20190113-182442.png}}
なお、今回も、CodeSandbox上で試みましたが、うまくいかなかったため、ローカルパソコン上で開発を行っています。
===== 初めてのVuex目次 =====
[[14.vue.jsのvuexで入力フォーム:index.html|14.vue.jsのvuexで入力フォーム]]
[[15.vue.jsのvuexでカウンター:index.html|15.Vue.jsのvuexでカウンター]]
[[16.vue.jsのvuexでパスワード制限:index.html|16.vue.jsのvuexでパスワード制限]]
[[17.nuxt.jsのvuexでパスワード制限:index.html|17.Nuxt.jsのvuexでパスワード制限]]
[[18.nuxt.jsとbulmaでハンバーガーメニュー:index.html|18.Nuxt.jsとBulmaでハンバーガーメニュー]]
[[19.nuxt.jsで画像一覧アプリ:index.html|19.Nuxt.jsで画像一覧アプリ]]
===== 方針をたてる =====
-サーバーサイドは、https://dog.ceo/dog-api/ を利用します
-サーバーから犬の種類のリストを取得して表示
-特定の犬種をクリックすると、その犬種の画像のリストを取得して表示
-画像をクリックするとモーダルウィンドウで拡大表示
-いいねボタン(クリックでカウントアップ)を表示
https://dog.ceo/dog-api/
{{:14.nuxt.jsで画像一覧アプリ:pasted:20190113-182748.png}}
今回は、以下のコードを参考にさせていただきました。
https://luftgarden.work/tut-nuxt-dog-part1/
ソースコード
https://codesandbox.io/s/y00qv4x7n9
作成中
できたもの
デモサイト
===== 開発環境 =====
Panasonic CF-RZ4
Window 8.1 Pro
VisualStudioCode
git version 2.17.1.windows.2
node 10.14.1
yarn 1.12.3
===== 新規Nuxt.jsアプリの作成 =====
*VisualStudioCodeのターミナル画面で、以下を入力
yarn create nuxt-app Nuxt-axios-DogPhotos
いろいろ聞かれるので、以下のように設定します。
-プロジェクト名は? => (Enter)
-プロジェクトの一言説明は? => (Enter)
-サーバーフレームワークは? => 使わない
-eslintは使う? => PWA supportとAxiosを入れる(Linterは使わない、PrettierはVisualStudioCodeの拡張プラグインPrettier - Code formatterを用いています)
-axiosモジュールは使う? => 使います!(大事なことなので、、、)
-UIフレームワークは? => vuetify
-testフレームワークは? => 使わない
-レンダリングモードは? => ユニバーサルじゃなくてシングルページアプリケーション
-作者名は? => (Enter)
-パッケージマネージャは? => npmじゃなくてyarn
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-221907.png}}
cd Nuxt-axios-DogPhotos
yarn run dev
{{:18.nuxt.jsとbulmaでハンバーガーメニュー:pasted:20190208-152758.png}}
*アドレスをCtrlを押しながらクリックすると、以下のページが開きます。
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-222142.png}}
これで、Nuxt.jsでvuetifyを使用する準備が出来ました。
layouts/default.vueのdarkを消したり、以下のように少し変更します。
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-222728.png}}
===== 犬種リストをDog APIで取得する =====
以下の3つの流れで実装します。(引用元:https://luftgarden.work/tut-nuxt-dog-part1/)
-Dog API用のクラスを作成
-ページからAPIのエンドポイントを叩く
-取得した犬種リストをストアに保存
==== Dog API用のクラスを作成 ====
api ディレクトリを新規作成してDog API用のクラスを作成します。
api/dog.js (新規作成)
import axios from 'axios'
class DogApi {
constructor() {
this.apiBase = 'https://dog.ceo/api';
}
breeds() {
return axios.get(`${this.apiBase}/breeds/list/all`)
.then(json => {
return json.data.message;
})
.catch(e => ({ error: e }));
}
}
const dogApi = new DogApi();
export default dogApi;
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-223644.png}}
==== 犬種リストを保存するストアを作成 ====
Vuexを利用します。
store/index.js (新規作成)
import Vuex from 'vuex'
const appStore = () => {
return new Vuex.Store({
state: {
breed_list: {},
},
mutations: {
breed_list_update(state, payload) {
state.breed_list = {...payload}
},
}
})
};
export default appStore;
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-223808.png}}
==== 画面上に犬種リストを表示する ====
「Vuexの mapStateヘルパーを使うことで、ストアからデータを取り出す」らしいのですが、、、とりあえず、とにかく、[[https://luftgarden.work/tut-nuxt-dog-part1/|こちらのサイト]]のpages/index.vueを写経します。
pages/index.vue
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-230906.png}}
Chrome拡張の[[https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd/related|Vue.js devtools]] をインストールしておき、
-Chromeで、Ctrl+Shift+Iでコンソール画面を開く
-一番右の Vue をクリック
-右側の方のVuex をクリック(かなり横長にしないと、Vueや、Vuexのボタンは見つけることが困難、、、)
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-231527.png}}
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-231652.png}}
==== 画面上に犬種リストを表示する ====
Vuexの mapStateヘルパーを使うことで、ストアからデータを取り出すことができるらしいです。
pages/index.vue
{{ i }}
(変更前)
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-232054.png}}
(変更後)
{{:19.nuxt.jsで画像一覧アプリ:pasted:20190208-233732.png}}
===== 犬種リストと、それぞれの犬種の画像リストのページの構成について =====
引き続き、https://luftgarden.work/tut-nuxt-dog-part2/ を写経していきます。
特定の犬種をクリックすると、画像が一覧表示されるようにします。
===== Nuxt.jsに関するリンク =====
https://speakerdeck.com/mahm/vue-dot-jsdezuo-rusingurupeziapurikesiyon-vue-dot-js-nuxt-dot-js-vuetify
{{:14.nuxt.jsで画像一覧アプリ:pasted:20190113-214433.png}}
https://qiita.com/nunulk/items/0d50ac8cf7e16287f915
@nunulk
2018年03月25日に更新
はじめての Nuxt.js + Vuex + axios
https://poridiet.com/nuxtaxiosvuex/
Nuxt.jsでaxiosとvuexを使ってみる
2018年11月27日
https://tech.libinc.co.jp/entry/2018/11/15/143000
2018-11-15
真のフロントエンドエンジニアになるために、まずはNuxt.js + Firebaseを使って簡易メモ帳を作ってみた
→非常に説明が丁寧です。かっこよくて使いやすいMarkdownエディタを作成することができます。Nuxt.jsとElemext-UI、Firebaseを用いています。後で写経してみたいです。(唯一の難点は、CSSが何百行もあるので、私には真似ができないです、、、)
https://tech.libinc.co.jp/entry/2018/12/10/181913
2018-12-10
入社2か月間で駆け出しエンジニアがつまずいた15のポイント
→非常に参考になります。
https://qiita.com/_takeshi_24/items/3ee051e1db1b3e8da106
@_takeshi_24
2018年10月28日に更新
Nuxt v2とFirebase(CloudFirestore)でPWA対応Webアプリ開発
https://inside.dmm.com/entry/2018/11/06/nuxt2-pwa-gae-se
2018-11-06
Nuxt.js v2とGAE/SE Node.jsでSPA×SSR×PWA×サーバーレスを実現する
https://codesandbox.io/s/github/manniL/nuxt-decouple-and-organize-api-calls/tree/master/?from-embed
https://webxreal.com/js_nuxt-axios-asyncdata/
Vue.js/Nuxt.jsでHTTP非同期通信axios/asyncDataを使ってみる
2018/9/23
https://rara-world.com/nuxt-js-tutorial-vue/
https://blog.uryo.net/%E6%97%A5%E5%B8%B8/cjo4dza6a000k45k3c74bywuv/
Vue.js + Nuxt.js + Vuetify + PWA + Firebaseで家計簿アプリを作ってみた
2018-10-24
===== Vuexに関するリンク =====
https://qiita.com/terraphic/items/078dfbadcd75ad336ed4
@terraphic
2018年08月15日に投稿
Vuexで状態管理の大事さを知る
https://qiita.com/MasahiroHarada/items/2597bd6973a45f92e1e8
@MasahiroHarada
2019年01月14日に更新
Vue + Vue Router + Vuex + Laravel チュートリアル(全16回)を書きました。
→これを写経してみたい!
===== ソースコード =====
作成中
===== リンク =====
目次:[[:index.html|このサイトについて]]
前:
次: