routes: 라우팅 할 URL과 컴포넌트 값 지정
-> 안에 객체로 들어감
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script>
<script>
var LoginComponent = {
template: '<div>login</div>'
}
var MainComponent = {
template: '<div>main</div>'
}
var router = new VueRouter({
// 페이지의 라우팅 정보
routes: [
{
// 페이지의 url 이름
path: '/login',
// 해당 url에서 표시될 컴포넌트
component: LoginComponent
},
{
// url은 main
// 컴포넌트 이름은 MainComponet
path: '/main',
component: MainComponent
}
]
});
new Vue({
el: '#app',
router: router
})
</script>
</body>
</html>
url에서 path를 적어주면 해당 컴포넌트안에 담은 내용이 router-view에 담긴다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-view></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script>
<script>
var LoginComponent = {
template: '<div>login</div>'
}
var MainComponent = {
template: '<div>main</div>'
}
var router = new VueRouter({
// 페이지의 라우팅 정보
routes: [
// 로그인 페이지 정보
{
// 페이지의 url 이름
path: '/login',
// 해당 url에서 표시될 컴포넌트
component: LoginComponent
},
// 메인 페이지 정보
{
// url은 main
// 컴포넌트 이름은 MainComponet
path: '/main',
component: MainComponent
}
]
});
new Vue({
el: '#app',
router: router
})
</script>
</body>
</html>
a태그와 비슷하다.
한번에 두개를 생성할 때는 router-link*2라고 하면 됨
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<div>
<router-link to="/login">Login</router-link>
<router-link to="/main">Main</router-link>
</div>
<router-view></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script>
<script>
var LoginComponent = {
template: '<div>login</div>'
}
var MainComponent = {
template: '<div>main</div>'
}
var router = new VueRouter({
// 페이지의 라우팅 정보
routes: [
// 로그인 페이지 정보
{
// 페이지의 url 이름
path: '/login',
// 해당 url에서 표시될 컴포넌트
component: LoginComponent
},
// 메인 페이지 정보
{
// url은 main
// 컴포넌트 이름은 MainComponet
path: '/main',
component: MainComponent
}
]
});
new Vue({
el: '#app',
router: router
})
</script>
</body>
</html>
라우터는 페이지를 이동할 때 사용하는 라이브러리
뷰에서 권고하는 HTTP 통신 라이브러리는 액시오스(Axios)입니다. Promise 기반의 HTTP 통신 라이브러리이며 상대적으로 다른 HTTP 통신 라이브러리들에 비해 문서화가 잘되어 있고 API가 다양합니다
axios github
자바스크립트의 비동기 처리 패턴
1. callback
2. promise promise 설명
3. promise + generator
4. async & await
promise -> 맞으면 then / 아니면 catch
this -> axios 전에 this는 users / axios 호출 후 결과의 this는 다르다
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Axios</title>
</head>
<body>
<div id="app">
<button v-on:click="getData">get user</button>
<div>
{{ users }}
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
users: []
},
methods: {
getData: function () {
var vm = this;
console.log(this);
axios.get('https://jsonplaceholder.typicode.com/users/')
.then(function (response) {
console.log(this)
console.log(response.data);
vm.users = response.data;
})
.catch(function (error) {
console.log(error);
});
}
}
})
</script>
</body>
</html>
필터-XHR
헤더 : 특정 응답, 요청 정보를 담고 있음
Http 프로토콜 설명
{{}} 콧수염괄호(Mustache Tag)
v- ..