<router-link to = "URL๊ฐ">
: ํ์ด์ง ์ด๋ ํ๊ทธ/ ํ๋ฉด์์๋ <a>
๋ก ํ์๋๋ฉฐ ํด๋ฆญํ๋ฉด to์ ์ง์ ํ URL๋ก ์ด๋<router-view>
: ํ์ด์ง ํ์ ํ๊ทธ/ ๋ณ๊ฒฝ๋๋ URL์ ๋ฐ๋ผ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ฟ๋ ค์ฃผ๋ ์์ญ<div id="app">
<h1></h1>
<p>
<!-- URL ๊ฐ์ ๋ณ๊ฒฝํ๋ ํ๊ทธ -->
<router-link to="/main"><button type="button">Main ์ปดํฌ๋ํธ๋ก ์ด๋</button></router-link>
<router-link to="/login"><button type="button">Login ์ปดํฌ๋ํธ๋ก ์ด๋</button></router-link>
</p>
<!-- URL ๊ฐ์ ๋ฐ๋ผ ๊ฐฑ์ ๋๋ ํ๋ฉด ์์ญ -->
<router-view></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- ๋ผ์ฐํฐ CDN -->
<script src="https://unpkg.com/vue-router@2.0.0/dist/vue-router.js"></script>
<script>
// Main, Login ์ปดํฌ๋ํธ ์ ์
var Main = {template : '<div>main</div>'}
var Login = {template : '<div>login</div>'}
// ๊ฐ URL์ ๋ง์ถฐ ํ์ํ ์ปดํฌ๋ํธ ์ง์
var routes = [
{path: '/main', component: Main},
{path: '/login', component: Login}
];
// ๋ทฐ ๋ผ์ฐํฐ ์ ์
var router = new VueRouter({
mode : 'history', // ๋ผ์ฐํฐ URL์ ํด์ ๊ฐ(#) ์์ ๊ธฐ
routes
});
// ๋ทฐ ์ธ์คํด์ค์ ๋ผ์ฐํฐ ์ถ๊ฐ
var app = new Vue({
router
}).$mount('#app');
</script>
โ $mount( )
- el์์ฑ๊ณผ ๋์ผํ๊ฒ ์ธ์คํด์ค๋ฅผ ํ๋ฉด์ ๋ถ์ด๋ ์ญํ
- ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ el์ก์ฑ์ ๋ฃ์ง ์์๋๋ผ๋ ์์ฑํ๊ณ ๋์ $mount( )๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ ๋ก ์ธ์คํด์ค๋ฅผ ํ๋ฉด์ ๋ถ์ผ ์ ์๋ค
- ๋ทฐ ๋ผ์ฐํฐ์ ๊ณต์๋ฌธ์์์๋ ๋ชจ๋ ์ธ์คํด์ค ์์ el์ ์ง์ ํ์ง ์๊ณ ๋ผ์ฐํฐ๋ง ์ง์ ํ์ฌ ์์ฑํ์ฌ $mount( )๋ฅผ ์ด์ฉํ๋ค
<div id="app">
<!-- URL ๊ฐ์ ๋ฐ๋ผ ๊ฐฑ์ ๋๋ ํ๋ฉด ์์ญ -->
<router-view></router-view><!-- user ์ปดํฌ๋ํธ๊ฐ ๋ฟ๋ ค์ง ์์ญ -->
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- ๋ผ์ฐํฐ CDN -->
<script src="https://unpkg.com/vue-router@2.0.0/dist/vue-router.js"></script>
<script>
// ====== ์ปดํฌ๋ํธ ๋ด์ฉ ์ ์ S ====== //
var User = {
template : `
<div>
User Comonent
<router-view></router-view>
</div>
`
};
var UserProfile = { template: '<p>User Profile Component</p>' };
var UserPost = { template: '<p>User Post Component</p>' };
// ====== ์ปดํฌ๋ํธ ๋ด์ฉ ์ ์ E ====== //
// ====== ๋ค์คํฐ๋ ๋ผ์ฐํ
์ ์ S ====== //
var routes = [
{
path:'/user',
component: User,
children: [
{
path: 'posts',
component : UserPost
},
{
path: 'profile',
component : UserProfile
},
]
}
];
// ====== ๋ค์คํฐ๋ ๋ผ์ฐํ
์ ์ E ====== //
// ====== ๋ทฐ ๋ผ์ฐํฐ ์ ์ S ====== //
var router = new VueRouter({
routes
});
// ====== ๋ทฐ ๋ผ์ฐํฐ ์ ์ E ====== //
// ====== ๋ทฐ ์ธ์คํด์ค์ ๋ผ์ฐ์ฒ ์ถ๊ฐ S ====== //
var app = new Vue({
router
}).$mount('#app');
// ====== ๋ทฐ ์ธ์คํด์ค์ ๋ผ์ฐ์ฒ ์ถ๊ฐ E ====== //
</script>
<div id="app">
<!-- URL ๊ฐ์ ๋ฐ๋ผ ๊ฐฑ์ ๋๋ ํ๋ฉด ์์ญ -->
<!-- name์์ฑ์ ์๋ components ์์ฑ์ ์ ์ํ๋ ์ปดํฌ๋ํธ์ ๋งค์นญํ๊ธฐ ์ํ ์์ฑ -->
<!-- name์์ฑ์ด ์์ ๋, default๋ก ํ์๋ ์ปดํฌ๋ํธ ์๋ฏธ -->
<router-view name="header"></router-view>
<router-view></router-view>
<router-view name="footer"></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- ๋ผ์ฐํฐ CDN -->
<script src="https://unpkg.com/vue-router@2.0.0/dist/vue-router.js"></script>
<script>
// ====== ์ปดํฌ๋ํธ ๋ด์ฉ ์ ์ S ====== //
var Body = { template: '<div>This is Body</div>'};
var Header = { template: '<div>This is Header</div>'};
var Footer = { template: '<div>This is Footer</div>'};
// ====== ์ปดํฌ๋ํธ ๋ด์ฉ ์ ์ E ====== //
// ====== ๋ทฐ ๋ผ์ฐํฐ ์ ์ S ====== //
var router = new VueRouter({
routes : [
{
path: '/',
components : {
default: Body,
header: Header,
footer: Footer
}
}
]
});
// ====== ๋ทฐ ๋ผ์ฐํฐ ์ ์ E ====== //
// ====== ๋ทฐ ์ธ์คํด์ค์ ๋ผ์ฐํฐ ์ถ๊ฐ S ====== //
var app = new Vue({
router
}).$mount('#app');
// ====== ๋ทฐ ์ธ์คํด์ค์ ๋ผ์ฐํฐ ์ถ๊ฐ E ====== //
</script>
<div id="app">
<button v-on:click="getData">ํ๋ ์์ํฌ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- ๋ทฐ ๋ฆฌ์์ค CDN -->
<script src="https://cdn.jsdelivr.net/npm/vue-resource@1.3.4"></script>
<script>
new Vue({
el:'#app',
methods: {
getData: function() {
this.$http.get(`https://raw.githubusercontent.com/joshua1988/doit-vuejs/master/data/demo.json`)
.then(function(response){
console.log(response);
console.log(JSON.parse(response.data)); // ๊ฐ์ฒด ์ ํ
});
}
}
});
</script>
โ promise ๊ธฐ๋ฐ์ API ํ์์ด๋?
// HTTP GET์์ฒญ axious.get('URL ์ฃผ์').then().catch();
ํด๋นURL ์ฃผ์์ ๋ํด HTTP GET์์ฒญ์ ๋ณด๋ธ๋ค. ์๋ฒ์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ ์์ ์ผ๋ก ๋ฐ์์ค๋ฉด then() ์์ ์ ์ํ ๋ก์ง์ด ์คํ๋๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด catch()์ ์ ์ํ ๋ก์ง์ด ์ํ๋๋ค.
// HTTP POST์์ฒญ axious.post('URL ์ฃผ์').then().catch();
ํด๋นURL ์ฃผ์์ ๋ํด HTTP POST์์ฒญ์ ๋ณด๋ธ๋ค. then()๊ณผ catch()์ ๋์์ ์์์ ์ดํด๋ณธ ๋ด์ฉ๊ณผ ๋์ผํ๋ค.
// HTTP ์์ฒญ์ ๋ํ ์ต์ ์์ฑ ์ ์ axious({ method: 'get', url: 'URL ์ฃผ์', ... });
HTTP ์์ฒญ์ ๋ํ ์์ธํ ์์ฑ๋ค์ ์ง์ ์ ์ํ์ฌ ๋ณด๋ผ ์ ์๋ค. ๋ฐ์ดํฐ ์์ฒญ์ ๋ณด๋ผ URL, HTTP ์์ฒญ ๋ฐฉ์, ๋ณด๋ด๋ ๋ฐ์ดํฐ ์ ํ, ๊ธฐํ ๋ฑ๋ฑ...
<div id="app">
<button v-on:click="getData">ํ๋ ์์ํฌ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- ๋ทฐ ๋ฆฌ์์ค CDN -->
<!-- <script src="https://cdn.jsdelivr.net/npm/vue-resource@1.3.4"></script> -->
<!-- ์ก์์ค์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ฉ -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
new Vue({
el:'#app',
methods: {
getData: function() {
axios.get(`https://raw.githubusercontent.com/joshua1988/doit-vuejs/master/data/demo.json`)
.then(function(response){
console.log(response);
});
}
}
});
</script>