Vue.js Router

Dec 11, 2019

Install

npm install vue-router

Edit router/index.js

import Vue from 'vue'import VueRouter from 'vue-router'import Home from '../views/Home.vue'import Page from '../views/Page.vue'Vue.use(VueRouter)const routes = [  {    path: '/',    name: 'home',    component: Home  },  {    path: '/page/:id',    component: Page  },  {    path: '/about',    name: 'about',    // route level code-splitting    // this generates a separate chunk (about.[hash].js) for this route    // which is lazy-loaded when the route is visited.    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')  }]const router = new VueRouter({  mode: 'history',  base: process.env.BASE_URL,  routes,  scrollBehavior (to, from, savedPosition) {    if (savedPosition) {      return savedPosition    } else {      return { x: 0, y: 0 }    }  }})export default router

Edit main.js

import Vue from 'vue'import App from './App.vue'import router from './router'Vue.config.productionTip = falsenew Vue({  router,  render: h => h(App)}).$mount('#app')

App Component

<template>  <div id="app">    <router-link to="/about">About</router-link>    <router-link :to="{ name: 'about' }">About</router-link>    <router-view/>  </div></template>

Page Component

<template>  <div>    {{ $route.params.id }} == {{ id }}  </div></template>export default {  name: 'page',  data() {    return {      id: this.$route.params.id    }  }}

Home Component

<template>  <div>    <router-link to="/page/first-page">First Page</router-link>    <router-link :to="{ name: 'page', params: {id: 'first-page'} }">First Page</router-link>    <button @click="gotoHelloWorld">Hello World</button>  </div></template><script>export default {  name: 'home',  methods: {    gotoHelloWorld() {      const id = 'hello-world'      this.$router.push({ name: 'page', params: { id } })      // or      // this.$router.push({ path: `/page/${id}` })      // or router.replace    }  }}</script>

References:

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.