vue + firebase 02_簡易To doリストアプリ
■Bootstrap Vueのインストール
公式サイトよりコマンド入手。
npm install vue bootstrap bootstrap-vue
をアプリのディレクトリで実行。
パッケージのインポート。
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
を src/router/index.js にコピペ。
さらに
// Import Bootstrap an BootstrapVue CSS files (order is important)
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
// Make BootstrapVue available throughout your project
Vue.use(BootstrapVue)
// Optionally install the BootstrapVue icon components plugin
Vue.use(IconsPlugin)
をコピペして準備完了。
ここまでのindex.jsは以下。
import Vue from 'vue' import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' import Router from 'vue-router' import Index from '@/pages/Index' // Import Bootstrap an BootstrapVue CSS files (order is important) import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap-vue/dist/bootstrap-vue.css' // Make BootstrapVue available throughout your project Vue.use(BootstrapVue) // Optionally install the BootstrapVue icon components plugin Vue.use(IconsPlugin) Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Index', component: Index } ] })
■pagesディレクトリ作成
src/pages ディレクトリを作成。
その中にindex.vue を作成。
index.vue を構築する。
vba で雛形を用意。
コンポーネント名をつける。
name: "Todo"
としておく。
次にtemplateの中にページタイトルを入力してゆく。
基本的にtemplateにはhtmlを入力してゆく。
とりあえずh1を入れておく。
ここまでのindex.vueは以下。
<template> <div> <h1>Todoリスト</h1> </div> </template> <script> export default { name: 'Todo' } </script> <style scoped> </style>
■index.jsの修正とルートディレクトリの変更
src/router/index.jsを開く。
import Router from 'vue-router'
の下に
import Index from '@/pages/Index'
と入れる。
ルーターを変更。
path: '/',
name: 'Index',
component: Index
と書き換える。
import HelloWorld from '@/components/HelloWorld'
は不要なので削除。
そして
src/components/HelloWorld.vue
も不要なので削除。
再度
npm run dev
で確認
localhost:8080
で確認できる(そうターミナルに出てきていれば成功)
ロゴも削除。
src/App.vue
の中にある
を削除。
localhost:8080
で削除されていればOK
ここまでのindex.jsは以下。
import Vue from 'vue' import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' import Router from 'vue-router' import Index from '@/pages/Index' // Import Bootstrap an BootstrapVue CSS files (order is important) import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap-vue/dist/bootstrap-vue.css' // Make BootstrapVue available throughout your project Vue.use(BootstrapVue) // Optionally install the BootstrapVue icon components plugin Vue.use(IconsPlugin) Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Index', component: Index } ] })
■TodoForm.vue の新規作成とBootstrapVueを使って作り込み
src/components ディレクトリに
TodoForm.vue ファイルを新規作成
コンポーネント名を決める。
name: 'TodoForm'
bootstrapVueのコンテイナーコンポーネント(タグみたいなもの)「b-container」を使う。
- 次にインプットグループコンポーネントを用意し、インプットフィールドをラップしていきます(b-input-group)。
次にフォームインプットコンポーネントを用意します(b-input-group)。
typeはtext.
<b-form-input type="text" />
追加用のボタンを用意。
インプットグループアペンドを使う。
ここまでのTodoForm.vueのコードは以下。
<template> <b-container> <b-input-group> <b-form-input type="text" /> <b-input-group-append> <b-button>Button</b-button> </b-input-group-append> </b-input-group> </b-container> </template> <script> export default { name: 'TodoForm' } </script> <style scoped> </style>
■index.vueへコンポーネントの登録
コンポーネントの読み込みには、componentsオプション内に、使いたいコンポーネントを読み込んでいきます。templateのところで呼び出せるようにしますが、ここは小文字で書くのが仕様です。
index.vueは以下のようになる。ブラウザで確認。
<template> <div> <h1>Todoリスト</h1> <todo-form /> </div> </template> <script> import TodoForm from '@/components/TodoForm' export default { name: 'Todo', components: { TodoForm } } </script> <style scoped> </style>
■TodoForm.vue ボタンカラー
ボタンカラーの変更は、ボタンコンポーネントにバリアントというプロパティをプロップスとして渡すことで変更することが出来ます。
<b-button variant="info">送信</b-button>
■TodoForm.vue 入力した値をデータプロパティに保存
ではデータオプションを追加し、バリュープロパティを持たせます。
<script> export default { name: 'TodoForm', data(){ return { value: '' } } } </script>
そして今回は、inputで入力した値を、そのままvalueプロパティに反映させたいので、v-modelというディレクティブを使用します。
<b-form-input type="text" v-model="value" />
vue.js内でのデータのやりとりをみていきたいので、chromenoのエクステンションを追加していきます。vue.js devtool です。
(vueで作られているものにだけ反応する優れもの)