LoginSignup
2
2

More than 3 years have passed since last update.

【初心者】Vue.jsでMVVMモデルを説明する(途中)

Last updated at Posted at 2020-07-07

vue.jsの初学者が忘れないように記録しました。
違っている部分がありましたらコメントください。

理解するごとに追記していきます。

ここでは
・トップページから他のページに移るまで(MVVMモデル)の流れ
・各ファイルの役割の説明

を説明します。

MVVMモデル

モデル(M)とビュー(V)間のやり取りをビューモデル(VM)を介して行うアーキテクチャのこと。

ViewModel

・Vue.js のインスタンスのこと。

Model

・dataオブジェクト と methodsオブジェクト のこと。
・el で指定されたDOM要素のこと。elでDOM要素を指定することで、ViewModel の適用範囲を指定できます。

DeNA DESIGN BLOG

各ファイルの流れ

main.js→new Vue()で指定したファイル→public/index.html→router.js→子要素のVueファイル

main.js

まずは main.js から全てが始まる。
new Vue() で Vue App を起動している。この時App.vueがメイン(親)のファイル、つまりルートパスとして最初に表示される。

main.jsのmount内とpublic/index.html内のid=" "は同じにする必要がある。今回はappとしている。

main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

router.js

読み込むファイルはrouter.jsに記述しておく必要がある。

router.js
import Vue from 'vue'
import Router from "vue-router"
import page2 from '@/components/page2'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/page2',
      component: page2
    },
    {
      path: '/',
      component: HelloWorld
    }
  ]
});

App.vue

・テンプレートタグ内に<router-view></router-view>と書いてあげることによって、router.jsに読み込んだファイルを表示する。

App.vue
<template>
  <div id="app">
   <router-view></router-view>
  </div>
</template>
<script>
export default {
  name: 'app',
  components: {
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

HelloWorld.vue

HelloWorld.vue
<template>
 <div>
<img alt="Vue logo" src="../assets/logo.png">
  <p>{{title}}</p>
  <!-- 子コンポーネントのmessageを設定して呼び出す -->
  <hello-child message='メッセージだよ'/>
  <router-link to="/page2">Go to page2</router-link>
 </div>
</template>

<script>
import HelloChild from './HelloChild'
export default {
  data: function () {
    return {
      title: 'はろー!わーるど!'
    }
  },
  components: {
    HelloChild
  }
}
</script>

page2.vue

page2.vue
<template>
  <div>
    <p>
      ここはページ2です。
    </p>
    <router-link to="/">Go to page1</router-link>
  </div>
</template>

<script>
</script>

<style>
</style>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2