Vue Router
라우팅이란 웹 페이지의 간의 이동방법을 의미.
Vue Router는
1) URL에 따라 보여줄 컴포넌트를 연결해 놓고,
2) 해당 URL로 이동했을때 연결된 컴포넌트를 보여준다.
Router 설치
npm i vue-router --save
routes 파일 생성
설치 후 routes.js 파일을 만들고,
사용할 컴포넌트들과 vue, vuerouter 등을 import 해준뒤
ulr과 컴포넌트들을 연결해준다.
import Vue from 'vue'
import VueRouter from 'vue-router'
import Main from '../views/Main.vue'
// route에 등록할 컴포넌트들 등록
Vue.use(VueRouter)
export const router = new VueRouter({
mode : 'history' ,
routes: [
{
name : 'main',
path: '/',
component: Main
}
]
})
참고
path : 'url' page의 url 경로
component : componentName page의 url 경로
mode : 'history' url의 해쉬 값 제거 속성
main.js에 router 연결
import Vue from 'vue';
import App from './App.vue';
//router 설정한 파일을 import
import router from './router';
Vue.config.productionTip = false;
new Vue({
render: (h) => h(App),
router,
}).$mount('#app');
root component( App.vue )에 router 출력 <router-view>
라우팅으로 렌더링 해주는 부분이 <router-view> 태그이다.
<router-view> 로 페이지 표시 태그, 변경되는 url에 대한 해당 컴포넌트를 뿌려준다.
<!-- App.vue -->
<template>
<div>
<!-- 여기에 라우터가 컴포넌트를 그린다 -->
<router-view></router-view>
</div>
</template>
라우터를 링크로 등록하기 <router-link>
<router-link> 는 페이지 이동 태그이다.
화면에서는 <a> 태그로 치환된다.
<a> 태그를 클릭하면 화면이 새로고침되는데 <router-link>는 이를 차단해준다.
preventdafalut 가 필요없다는 뜻 !
router-link의 :to 속성
path : 전달하려는 경로
query : JSON 형태이며 query string 형태로 전달되는 파라미터
-> $route.query로 접근
params : name 형태에서 파라미터를 전달할때 사용
->$router.params로 접근
name : routes요소의 이름 기반으로 이동 가능
<!--Router.js-->
export const router = new VueRouter({
mode : 'history' ,
routes: [
{
path: '/user/:userId', //:동적바인딩처리
name: 'user',
component: User
}
]
})
<!--components-->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
// router.push({ name: 'user', params: { userId: 123 }}) 와 같은 역할
// /user/123 으로 이동하게 된다
+ ) Query와 Params
Request객체는 API를 컨트롤 하기위한 메소드를 담고있는데 , 그중에 query와 params에 대해 정리해 보자면,
params 주소에 포함된 변수
query 주소 바깥 " ? " 이후의 변수
+ ) 만약에 &로 이어져 여러개인 query string 이라면 !
시작 -> ? ex ) postId=1&id=3
다음 질의 (질의구분) -> & ex ) postId=1&id=3
데이터 -> 변수=값 ex ) postId=1&id=3
변수 postId , id | 값 1 , 3
✓참고
velog.io/@skyepodium/Vue-Router-fijr95dn4j
'Vue' 카테고리의 다른 글
[ Vue ] emit 한줄로 사용하기 - @click.self (0) | 2021.02.04 |
---|---|
[ Vue ] 컴포넌트 내에서 라우터 변경 감지하기 (0) | 2020.12.22 |
[ Vue ] CLI로 SPA프로젝트 생성하기 + Vuetify (0) | 2020.09.25 |
[ Vue ] 컴포넌트간 데이터 전달 , PROPS와 EMIT (0) | 2020.09.21 |
[Vue.js #1] 리액트와 뷰의 공통점 (0) | 2020.09.15 |