本日はここに逆引きVueを書きたいと思います。質問などあれば、コメント書いてください。
新しいページを追加する
まずは、ページを追加します。他のページを丸々コピーしてファイル名を変更しましょう。今回の場合mainpage.vueという名前にしました。よくわからない場合は、このページにサンプルで載せてあるmainpage.vue のコードをコピペしましょう。
index.jsを開いて以下のコードを追加する。
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Sample1 from '@/components/sample1'
import Sample2 from '@/components/sample2'
//ここに追加したページのファイル名を記載します。mainpageですね
import Mainpage from '@/components/mainpage'
import Signup from '@/components/Signup'
import Signin from '@/components/Signin'
import firebase from 'firebase'
Vue.use(Router)
let router= new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
{
path: '/sample1',
name: 'Sample1',
component: Sample1
},
{
path: '/sample2',
name: 'Sample2',
component: Sample2
},
{
path: '/signup',
name: 'Signup',
component: Signup
},
{
path: '/signin',
name: 'Signin',
component: Signin
},
//新たに追加するページ名を記載
{
path: '/mainpage',
name: 'Mainpage',
component: Mainpage
}
]
})
router.beforeEach((to, from, next) => {
let requiresAuth = to.matched.some(record => record.meta.requiresAuth)
let currentUser = firebase.auth().currentUser
if (requiresAuth) {
// このルートはログインされているかどうか認証が必要です。
// もしされていないならば、ログインページにリダイレクトします。
if (!currentUser) {
next({
path: '/sample1',
query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
next() // next() を常に呼び出すようにしてください!
}
})
export default router
続いて、mainpage.vueを開き、nameの箇所をMainpageという名前にします。(先ほどindex.jsで記載した名前と一致するように書きましょう)
<template>
<div>
<button v-on:click="addText(textMsg)">ADD TEXT</button>
<p><input type="text" v-model="textMsg"></p>
<div v-for="item in items" :key="item.id" >
<p>{{item.title}}</p>
</div>
</div>
</template>
<script>
export default {
//ここの名前をindex.jsで設定した名前と同じにする
name: 'Mainpage',
data () {
return {
msg: 'How are you?',
items:['title'],
}
},
methods:{
addText:function(textMsg){
this.items.push({title:textMsg})
},
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
</style>
http://localhost:8080/#/mainpage で確認してみると、上のように表示されているのがわかります。
Firebaseからデーターを読み込む
Firebaseからデーターを読み込むのはちょっとめんどくさいですよ。
<template>
<div>
<button v-on:click="Loading()">Load</button>
</div>
</template>
< script >
//この一文を追加する
import firebase from 'firebase'
export default {
name: 'Mainpage',
data() {
return {
msg: 'How are you?',
}
},
methods: {
//Firebaseからデーターを読み込む
Loading: function () {
var pageNum = '';
// messageというコレクションのtestというドキュメントを参照する
const colref = firebase.firestore().collection("message").doc("test");
//データの読み込み
var allCities = colref.get().then(doc => {
if (!doc.exists) {
console.log('No such document!');
} else {
console.log('Document data:', doc.data());
var names = new Array();
for (var j in names) {}
}
}).catch(err => {
console.log('Error getting document', err);
});
},
}
}
< /script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
</style>
データーを追加する
データーベースにデーターを追加するには以下のソースを使うと便利です。
Posttopic: function (){
const colref = firebase.firestore().collection("message").doc("test"); // "formcontent"という名前のコレクションへの参照を作成
var arrayForData = {};
var Database = [];
var i = 0;
var index=0;
var typeNum=0;
for (var j=0;j<10;j++) {
console.log(j);
Database.push({
block: j,
name: 'this.fields[j].nextPage',
});
}
for (var k in Database) {
arrayForData[i] = Database[k]
i++;
console.log(Database[k]);
}
// addの引数に保存したいデータを渡す
colref.set(arrayForData).then(function (docRef) {
// 正常にデータ保存できた時の処理
console.log("Document written with ID: ", docRef.id);
}).catch(function (error) {
// エラー発生時の処理
console.error("Error adding document: ", error);
});
}
新たなドキュメントにデーターを追加する
新たなドキュメントにデーターを追加するときはaddという関数を使います。下にサンプルを載せておきます。
AddTopic: function (){
const colref = firebase.firestore().collection("message"); // "formcontent"という名前のコレクションへの参照を作成
var arrayForData = {};
var Database = [];
var i = 0;
var index=0;
var typeNum=0;
for (var j=0;j<10;j++) {
console.log(j);
Database.push({
block: j,
name: 'this.fields[j].nextPage',
});
}
for (var k in Database) {
arrayForData[i] = Database[k]
i++;
console.log(Database[k]);
}
// addの引数に保存したいデータを渡す
colref.add(arrayForData).then(function (docRef) {
// 正常にデータ保存できた時の処理
console.log("Document written with ID: ", docRef.id);
}).catch(function (error) {
// エラー発生時の処理
console.error("Error adding document: ", error);
});
},
新規でプロジェクトを作成する
Vueで新規にプロジェクトを作成する方法について解説します。まずはターミナルを開いて、以下のコマンドを打ち込みましょう。
$ vue init webpack my-project
なお、黄色のアンダーラインはプロジェクト名を指します。好きなプロジェクト名を書きましょう。ここでは「my-project」という名前にしました。このあと色々聞かれるので、大抵は何も入力せずNoを選択すればOKです。
続いてプロジェクト内に移動しましょう
$ cd my-project
これで、完了です
Firebaseをインストールする
新規でプロジェクトを作成したら、作成したプロジェクトまで移動してFirebaseをインストールします。仮にmy-project というプロジェクトを作成したらまず移動します。
$ cd my-project
続いて、移動先でFirebaseをインストールします。
$ npm install firebase --save
これでFirebaseのインストールは完了です
Vueをローカル環境で動かす
Vueをローカル環境で動かすには、プロジェクト配下に移動後、以下のコマンドを入力してください
$ npm run dev
このように表示されたら”http://localhost:8080”にアクセスしてください。画面が表示されるはずです。
最初の1回だけ行いたい処理を書く
最初の一回だけ行いたい処理は、この関数内に記載します。
created(){
//ここに処理を書いてください
},
別のページに移動する
Vueで別のリンクに飛ぶ時の記載方法は
this.$router.push('/遷移先のファイル名')
と書きます