空の下でひっそりと

てきとーに更新していきます。レーザーカッターや3Dプリンタが好き

vueで単語帳アプリを作ってみる。

最近vue.jsを勉強しようと思い、Vuejs&Nuxtjs超入門本を1周しました。 

 

Vue.js&Nuxt.js超入門

Vue.js&Nuxt.js超入門

 

  

この本ではリアクティブプログラミングの基礎をvueを通じて学べて、axiosを使ったデータのやりとり、それに伴う処理の速さがとても楽しかったです。

とはいえ、vueにもうちょい慣れたいなーと思ったので、本に無いアプリで作れるか試してみようと思い、暗記アプリを作り始めました。

これからブログで、少しでもやってみたことを記録していこうと思ってます!

(ある程度まとまったら、チュートリアルみたいなの作れないかなーと思ったり😂)

f:id:yabu_sw:20200716020108p:plain


 

 

暗記アプリ

いわいる単語帳です。web上で使える物も結構あるので、サービスとしては「それでいいじゃん」、といわれるやつです。機能もりもりにしなければ簡単なので、作ってみようと思います。

 

バージョン

@nuxt/cli v2.12.2

vue@2.6.11

 

まずはルーティング

とりあえず最初は、重要な単語帳ページとカテゴリーページを作成します。

nuxtはpagesディレクトリ内を参照して、vue-router構成を自動的に生成してくれます。

ということで、pagesディレクトリ内にsubjectフォルダを作成し、そこにカテゴリーごとに表示する_cat.vueファイルを作成します。

こうすることで、「/subject/カテゴリ名」というルーティングを作ることができ、作成したカテゴリごとの単語帳の表示ができるようにしました。

単語帳機能を先につくりたいので、/subject/_cat.vueファイルから編集していきます。

(余計なのいっぱい入ってます。。。

f:id:yabu_sw:20200716014437p:plain

method使って表示を変更

単語帳が次の単語に進むために、○(正解した)か✖️(間違え)のボタンを用意しました。

いずれかを押すとカウントアップし、カウントアップした数字をもとに配列の値を1つ進めることで問題が進むようにしました。

ちなみに、配列に代入するだけだと変更を検知してくれないそうです。

割と多く記事があがっていたので、気をつけないとですね。

https://jp.vuejs.org/v2/guide/list.html

https://qiita.com/rh_taro/items/5c2af729dc7e3d6bd28a

 

vueのbindとv-onをつかった

f:id:yabu_sw:20200716014356p:plain

 


普段単語帳を使う時って、

1、単語を見る

2、単語の意味を思い浮かべる<->英訳を思い浮かべる

3、答えを確認する

といった動作が必要になると思います。

システムでは1の時に答えを隠して、2をユーザーがした後、なにかしらの動作で3の答えを表示する機能を作成する必要があります。

ここをv-onで問題文のクリックを検知し、v-bindでクラスのtrue/falseできるようにしました。

ここら辺が参考になりました。

https://qiita.com/g-taguchi/items/9f97f2172aa048934f1c

 

ナビゲーションを関数内で実行する

template内で<router-link>を使う方法ではなく、関数内などでページ遷移をさせる方法です。関数実行後にページ遷移させたい時に使えました。

f:id:yabu_sw:20200716014318p:plain

https://router.vuejs.org/ja/guide/essentials/navigation.html

 

とりあえず単語帳っぽいのが作れた

f:id:yabu_sw:20200716020005g:plain

 

追加と編集とかもUIから操作できるように作ろうと思ったんですけど、ここから先はデータベースに保存できた方が楽しいかもと思ったので、Laravelと組み合わせて進めていくことにしました。

 

また進展あったら、ブログに残していこうと思います。