<Do it! Vue.js μ λ¬Έ>μ κΈ°λ³ΈμΌλ‘ λ°°μ΄ λ΄μ©μ λλ€.
μ°Έκ³ νλ©΄ μ’μ μ¬μ΄νΈ
router.vuejs.org/kr/installation.html
router.vuejs.org/kr/api/#router-link
<Vue Router>
1. Routing
- λΌμ°ν μ΄λ μΉ νμ΄μ§ κ°μ μ΄λ λ°©λ²μ λ§νλ€.
- λΌμ°ν μ μ΄μ©νλ©΄ νλ©΄ κ°μ μ νμ΄ λ§€λλ½κ² μ²λ¦¬ν μ μλ€.
- νλ‘ νΈμλ νλ μμν¬(λ·°, 리μ‘νΈ, μ΅κΈλ¬) λͺ¨λ λΌμ°ν μ μ΄μ©νμ¬ νλ©΄μ μ ννκ³ μλ€.
- νλ‘ νΈμλ νλ μμν¬λ₯Ό μ¬μ©νμ§ μκ³ , μΌλ° HTMLνμΌλ€λ‘λ λΌμ°ν μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ λΌμ°ν λ°©μμ νμ΄μ§ μ΄λμ ꡬνν μ μλ€.
2. Vue Router
λ·° λΌμ°ν°λ₯Ό μ΄μ©νμ¬ λ·°λ‘ λ§λ νμ΄μ§ κ°μ μμ λ‘κ² μ΄λν μ μλ€.
νκ·Έ | μ€λͺ |
<router-link to="URLκ°"> | νμ΄μ§ μ΄λ νκ·Έ νλ©΄μμλ <a>λ‘ νμλλ€. |
<router-view> | νμ΄μ§ νμ νκ·Έ λ³κ²½λλ URLμ λ°λΌ ν΄λΉ μ»΄ν¬λνΈλ₯Ό λΏλ €μ£Όλ μμμ΄λ€. |
ex)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue Router Sample</title>
</head>
<body>
<div id="app">
<h1>λ·° λΌμ°ν° μμ </h1>
<p>
<router-link to="/main">Main μ»΄ν¬λνΈλ‘ μ΄λ</router-link>
<router-link to="/login">Login μ»΄ν¬λνΈλ‘ μ΄λ</router-link>
</p>
<router-view></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script>
<script>
// 3. Main. Login μ»΄ν¬λνΈ λ΄μ© μ μ
var Main = { template: '<div>main</div>' };
var Login = { template: '<div>login</div>' };
// 4. κ° urlμ ν΄λΉνλ μ»΄ν¬λνΈ λ±λ‘
var routes = [
{ path: '/main', component: Main },
{ path: '/login', component: Login }
];
// 5. λ·° λΌμ°ν° μ μ
var router = new VueRouter({
routes
});
// 6. λ·° λΌμ°ν°λ₯Ό μΈμ€ν΄μ€μ λ±λ‘
var app = new Vue({
el: '#app',
router: router
});
</script>
</body>
</html>
3. μ¬λ¬ κ°μ μ»΄ν¬λνΈλ₯Ό λμμ νμν μ μλ λΌμ°ν°
1) Nested Router
- λΌμ°ν°λ‘ νμ΄μ§λ₯Ό μ΄λν λ μ΅μ 2κ° μ΄μμ μ»΄ν¬λνΈλ₯Ό νλ©΄μ λνλΌ μ μλ€.
- μμ μ»΄ν¬λνΈ 1κ°μ νμ μ»΄ν¬λνΈ 1κ°λ₯Ό ν¬ν¨νλ ꡬ쑰μ΄λ€.
- URLμ λ°λΌμ μ»΄ν¬λνΈμ νμ μ»΄ν¬λνΈκ° λ€λ₯΄κ² νμλλ€.
ex)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue Nested Router</title>
</head>
<body>
<div id="app">
//1. User μ»΄ν¬λνΈκ° λΏλ €μ§ μμ
<router-view></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script>
<script>
//2.μ»΄ν¬λνΈ λ΄μ© μ μ
var User = {
template: `
<div>
User Component
//3. νμ μ»΄ν¬λνΈκ° λΏλ €μ§ μμ
<router-view></router-view>
</div>
`
};
var UserPost = { template: '<p>User Post Component</p>' };
var UserProfile = { template: '<p>User Profile Component</p>' };
//4. λ€μ€ν°λ λΌμ°ν
μ μ
var routes = [
{
path: '/user', component: User,
children: [
{
path: 'post',
component: UserPost
},
{
path: 'profile',
component: UserProfile
},
]
}
];
//5. λ·° λΌμ°ν° μ μ
var router = new VueRouter({
routes
});
//6. λ·° μΈμ€ν΄μ€μ λΌμ°ν° μΆκ°
var app = new Vue({
router
}).$mount('#app');
</script>
</body>
</html>
2) Named Vue
- νΉμ νμ΄μ§λ‘ μ΄λνμ λ μ¬λ¬ κ°μ μ»΄ν¬λνΈλ₯Ό λμμ νμνλ λΌμ°ν λ°©μμ΄λ€.
- κ°μ λ 벨μμ μ¬λ¬ κ°μ μ»΄ν¬λνΈλ₯Ό ν λ²μ νμνλ ꡬ쑰μ΄λ€.
ex)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue Named View Sample</title>
</head>
<body>
//1. λΌμ°ν
μμ μ μ
<div id="app">
<router-view name="header"></router-view>
<router-view></router-view> //nameμ΄ μλ κ²½μ°λ λν΄νΈ
<router-view name="footer"></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script>
<script>
//2. μ»΄ν¬λνΈ λ΄μ© μ μ
var Body = { template: '<div>This is Body</div>' };
var Header = { template: '<div>This is Header</div>' };
var Footer = { template: '<div>This is Footer</div>' };
//3. λΌμ°ν° μ μ
var router = new VueRouter({
routes: [
{
//4. λ€μλ λ·°κ° μ€νλ URLμ μ
path: '/',
//5. <router-view>μ nameμμ±κ³Ό μ»΄ν¬λνΈλ₯Ό μ°κ²°
components: {
default: Body,
header: Header,
footer: Footer
}
}
]
})
//6. μΈμ€ν΄μ€ μμ±, λ€μλ λ·° μ 보λ₯Ό κ°κ³ μλ λΌμ°ν°λ₯Ό ν¬ν¨
var app = new Vue({
router
}).$mount('#app');
</script>
</body>
</html>
'π»WEB FrontEnd > νλ μμν¬ Vue' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Vueμ templateμμ± (0) | 2020.07.04 |
---|---|
λ·° HTTP ν΅μ (0) | 2020.07.02 |
Vue Componets ν΅μ (0) | 2020.07.02 |
Vue Componets (0) | 2020.07.02 |
Vue Instance (0) | 2020.07.01 |