라우터는 화면을 새로 고침하지 않고 태그만 변경하여 표시하는 기능이다.
커맨트 창에서 아래 입력하여 설치
npm install vue-router
import Vue from 'vue' import VueRouter from 'vue-router' import Main from '@/components/Main.vue'; import About from '@/components/About.vue'; Vue.use(VueRouter) let router = new VueRouter({ // history 모드는 자연스러운 url 가능, 지정하지 않으면 해시(#)기호로 url 사용 mode: 'history', routes: [ { path: "/", // 경로 name: "Main", // 해당 경로의 이름 component: Main // 이동할 컴포넌트 }, { path: "/about", // 경로 name: "About", // 해당 경로의 이름 component: About // 이동할 컴포넌트 } ] }) export default router;
import Vue from 'vue' import App from './App.vue' import router from '@/router/router.js' // router import Vue.config.productionTip = false new Vue({ router, // router 추가 render: h => h(App), }).$mount('#app')
<template> <div id="app"> <router-link to="/">home</router-link> | <router-link to="/about">about</router-link> <hr> <router-view></router-view> </div> </template> <script> export default { name: 'App', } </script>
routes: [ { //처음 페이지 집입시 path: '/', redirect: '/BlogList' }, { path: '/BlogList', name: 'BlogList', component: () => import('@/components/BlogList') } ]
routes: [ { path: '*', component: () => import('@/components/NotFound') } ]
<router-link to="/">home</router-link> | <router-link to="/about">about</router-link>
---------------------라우터를 이동 및 파라미터를 전달할 vue-------------- <template> <div id="app"> <router-link to="/">home</router-link> | <router-link to="/about">about</router-link> <hr> <button @click='gotoHome()'>메인 페이지로 이동</button> <br> <button @click='gotoPath()'>push로 path: 이동</button> <br> <button @click='gotoName()'>push name으로 이동</button> <br> <button @click='gotoNameParams()'>push로 name 및 params 보내서 이동</button> <br> <button @click='gotoQuery()'>push로 Query 이동</button> <br> <button @click='nextPage()'>다음 페이지 이동</button> <br> <button @click='previousPage()'>이전페이지 이동</button> <br> <router-view></router-view> </div> </template> <script> export default { name: 'App', methods:{ gotoPath(){ this.$router.push({path:'/about'}); }, gotoName(){ this.$router.push({name:'About'}); }, gotoHome(){ this.$router.push('/'); }, gotoNameParams(){ this.$router.push({ name: 'About', params: { userId: 444455555 }}) }, gotoQuery(){ this.$router.push({ path: '/About', query: { plan: 'private' }}) }, nextPage(){ this.$router.go(1); }, previousPage(){ this.$router.go(-1); }, goto3Page(){ this.$router.go(3); }, } } </script> -------------------- 라우터 명령어를 통해 이동될 vue----------- <template> <div> <h1>This is about page</h1> <p>router로 받은 파라미터 값 {{$route.params}}</p> <p>라우터를 통해 query로 받은 값:{{$route.query}}</p> </div> </template> <script> export default { created(){ console.log(this.$route.params); console.log(this.$route.query); } } </script>