IT&컴퓨터공학/Vue
[Vue.js] 6. 라우팅 - 중첩된 라우팅
yan_z
2021. 3. 5. 11:50
중첩된 라우팅
블로그 예제를 위한 중첩된 라우팅을 설계해보자 . 아래의 6가지 경로를 선정했다.
- / 홈
- /login 로그인
- /logout 로그아웃
- /posts 포스트 목록
- /posts/detail 포스트 상세
- /posts/new 포스트 추가
일단 router 를 생성한 router/index.js 에 들어가자.
생성된 router 에 routes 속성에 path 와 component 들을 배열로 추가한다.
import Vue from "vue"
import VueRouter from "vue-router"
// 뷰 어플리케이션에 라우터 플러그인을 추가한다.
Vue.use(VueRouter)
const router = new VueRouter({
mode: "history",
routes: [
{path:'/',component:Home},
{path:'/login',component:Login},
{path:'/logout',component:Logout},
{path:'/post',component:Post},
{path:'/post/detail',component:PostDetail},
{path:'/post/add',component:PostAdd},
],
})
export default router
여기서 PostDetail 과 PostAdd 는 Post 의 자식인데, 이를 표현하기위해 children 이라는 속성이 있다.
이는 특정 라우팅의 하위 경로가 변경됨에 따라 하위 컴포넌트로 변경할수 있는 기능이다.
Children 속성 - 배열로 담아야함 !
/posts 경로를 포함한 하위 경로인 /posts/new와 /posts/detail을 children 옵션으로 변경해 보면 이렇다.
import Vue from "vue"
import VueRouter from "vue-router"
import Home from '../views/home.vue'
import Login from '../views/login.vue'
import Logout from '../views/logout.vue'
import Post from '../views/post.vue'
import PostDetail from '../views/postdetail.vue'
import PostAdd from '../views/postadd.vue'
// 뷰 어플리케이션에 라우터 플러그인을 추가한다.
Vue.use(VueRouter)
const router = new VueRouter({
mode: "history",
routes: [
{ path:'/',component:Home },
{ path:'/login',component:Login },
{ path:'/logout',component:Logout },
{ path:'/post',
component:Post,
children:[
{path:'/post/detail',component:PostDetail},
{path:'/post/add',component:PostAdd},
]
},
],
})
export default router
- /post 라우팅

- /post/new 라우팅

- /post/detail 라우팅

가만히 보면 중첩된 라우팅이 중첩된 화면을 구성하는데 적합하다는 것을 알수 있다.