10.vue.jsとfirebaseでランキングつき連打ゲーム:index.html
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 10.vue.jsとfirebaseでランキングつき連打ゲーム:index.html [2018/12/27] – [Vuetifyのv-imgの相対パスでの画像がうまく表示されない] adash333 | 10.vue.jsとfirebaseでランキングつき連打ゲーム:index.html [2018/12/31] (現在) – [0.用意するもの(開発環境)] adash333 | ||
|---|---|---|---|
| 行 8: | 行 8: | ||
| 今回作成するタップゲームは、 | 今回作成するタップゲームは、 | ||
| + | -10秒間で何回マトをタップできるか競うゲーム(爆) | ||
| -Firebaseを利用するために、トップページHome.vueに、「匿名ログイン」ボタンを表示 | -Firebaseを利用するために、トップページHome.vueに、「匿名ログイン」ボタンを表示 | ||
| - | -ログイン後はタップゲーム画面Secret.vueに移動 | + | -ログインしなくても遊べる |
| - | -ゲーム終了後、名前を登録すると | + | -ログインすれば、firebaseにスコアと名前を登録(write)したり、ランキングを見る(read)ことができる |
| - | -オンラインランキング画面に移動 | + | |
| となります。 | となります。 | ||
| 行 19: | 行 19: | ||
| ソースコード 作成中 | ソースコード 作成中 | ||
| - | + | https:// | |
| - | https:// | + | |
| 作ったもの 作成中 | 作ったもの 作成中 | ||
| < | < | ||
| - | <iframe src=" | + | <iframe src=" |
| </ | </ | ||
| 行 40: | 行 39: | ||
| < | < | ||
| CodeSandbox | CodeSandbox | ||
| - | Firebase | + | Firebase |
| Vue 2.5.2 | Vue 2.5.2 | ||
| Vuetify | Vuetify | ||
| 行 296: | 行 295: | ||
| < | < | ||
| < | < | ||
| - | < | + | <p>{{ msg }}</ |
| </ | </ | ||
| 行 313: | 行 312: | ||
| </ | </ | ||
| これに気付くのに、Ionic3の時代からあわせて1年くらいかかりました。。。 | これに気付くのに、Ionic3の時代からあわせて1年くらいかかりました。。。 | ||
| + | |||
| + | ===== Vuetifyでテーブル ===== | ||
| + | 最初は、かなりややこしい感じがしますが、慣れれば割と簡単に降順に記載したりできるようです。 | ||
| + | |||
| + | |||
| + | https:// | ||
| + | 20180529 | ||
| + | VuetifyのData tableを指定列の降順で初期表示する | ||
| + | |||
| + | https:// | ||
| + | |||
| + | 公式ドキュメント | ||
| + | https:// | ||
| + | |||
| + | ===== javascriptの配列とオブジェクト ===== | ||
| + | |||
| + | 配列について | ||
| + | |||
| + | http:// | ||
| + | JavaScriptの配列オブジェクトの使い方 | ||
| + | 20180730 | ||
| + | |||
| + | http:// | ||
| + | JavaScriptの配列要素の値を追加/ | ||
| + | 20180817 | ||
| + | |||
| + | 連想配列(オブジェクト)について | ||
| + | |||
| + | http:// | ||
| + | JavaScriptの連想配列を使ってみよう! | ||
| + | 20180820 | ||
| + | |||
| + | 今回のコードで、一番難しいところ。 | ||
| + | ここは、https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | | ||
| + | firebase | ||
| + | .database() | ||
| + | .ref(" | ||
| + | .on(" | ||
| + | // eslint-disable-line | ||
| + | if (snapshot) { | ||
| + | const rootList = snapshot.val(); | ||
| + | let list = []; | ||
| + | Object.keys(rootList).forEach((val, | ||
| + | rootList[val].id = val; | ||
| + | list.push(rootList[val]); | ||
| + | }); | ||
| + | this.list = list; | ||
| + | // | ||
| + | this.list.sort(function(a, | ||
| + | return a.score > b.score ? -1 : 1; | ||
| + | }); | ||
| + | } | ||
| + | }); | ||
| + | }, | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | 以下のコードでもよい? | ||
| + | https:// | ||
| + | |||
| + | < | ||
| + | < | ||
| + | <ul v-for=" | ||
| + | < | ||
| + | <button type=" | ||
| + | </ul> | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | created: function() { | ||
| + | this.database = firebase.database(); | ||
| + | this.uid = firebase.auth().currentUser.uid; | ||
| + | this.todosRef = this.database.ref(" | ||
| + | |||
| + | var _this = this; | ||
| + | // データに変更があると実行されるfunction | ||
| + | this.todosRef.on(" | ||
| + | this.todos = snapshot.val(); | ||
| + | }); | ||
| + | }, | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== FirebaseのRTDBのobjectをarrayに変換する ==== | ||
| + | |||
| + | Firebaseドキュメント | ||
| + | https:// | ||
| + | |||
| + | < | ||
| + | // Import Admin SDK | ||
| + | var admin = require(" | ||
| + | |||
| + | // Get a database reference to our posts | ||
| + | var db = admin.database(); | ||
| + | var ref = db.ref(" | ||
| + | |||
| + | // Attach an asynchronous callback to read the data at our posts reference | ||
| + | ref.on(" | ||
| + | console.log(snapshot.val()); | ||
| + | }, function (errorObject) { | ||
| + | console.log(" | ||
| + | }); | ||
| + | |||
| + | </ | ||
| + | |||
| + | スナップショットの val() / getValue() を呼び出すと、データの言語固有のオブジェクト表現が返されます。 | ||
| + | |||
| + | とのことです、、、console.log(snapshot.val())の中身をコンソール画面で確認するしかなさそうです。 | ||
| + | |||
| + | |||
| + | < | ||
| + | const rootList = snapshot.val(); | ||
| + | let list = []; | ||
| + | Object.keys(rootList).forEach((val, | ||
| + | rootList[val].id = val; | ||
| + | list.push(rootList[val]); | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | rootListが、firebaseから受け取ったobject | ||
| + | |||
| + | これを、listという配列arrayに変換する。 | ||
| + | |||
| + | <wrap hi> | ||
| + | (間違っていたらすみません、、、) | ||
| + | |||
| + | https:// | ||
| + | Object.keys()メソッドについて | ||
| + | |||
| + | Object.keys(object1)で、連想配列object1のキーkeyの配列arrayを得ます。 | ||
| + | |||
| + | < | ||
| + | const object1 = { | ||
| + | a: ' | ||
| + | b: 42, | ||
| + | c: false | ||
| + | }; | ||
| + | |||
| + | console.log(Object.keys(object1)); | ||
| + | // expected output: Array [" | ||
| + | </ | ||
| + | |||
| + | ==== forEach文 ==== | ||
| + | |||
| + | |||
| + | https:// | ||
| + | 【JavaScript入門】forEach文の使い方と配列の繰り返し処理まとめ! | ||
| + | 2016年 by マサト | ||
| + | |||
| + | ==== forEach文のコールバック関数 ==== | ||
| + | |||
| + | < | ||
| + | array.forEach( function( value, index, array ) { | ||
| + | |||
| + | // 繰り返し処理を書く | ||
| + | |||
| + | }); | ||
| + | </ | ||
| + | |||
| + | value:配列データの値 | ||
| + | index:配列のインデックス番号 | ||
| + | array:現在処理している配列 | ||
| + | |||
| + | https:// | ||
| + | @nantekkotai | ||
| + | 2014年02月21日に更新 | ||
| + | JSのObjectをforEachで処理する方法 | ||
| + | |||
| + | https:// | ||
| + | 2016-06-21 | ||
| + | Javascript 連想配列(オブジェクト)をforEachでループさせたい。 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | https:// | ||
| + | Convert A Firebase Database Snapshot/ | ||
| + | Last updated: March 8, 2018 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
10.vue.jsとfirebaseでランキングつき連打ゲーム/index.html.1545918769.txt.gz · 最終更新: 2018/12/27 by adash333
