반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 평일코딩
- javascript
- 오라클
- 스프링
- 정보처리기사실기정리
- ReactNative
- 자스코테
- CSS
- 리액트
- 정보처리기사실기
- 정보처리기사정리
- 자바의정석
- php
- 리액트네이티브
- Oracle
- 코딩테스트
- 자바스크립트
- 이안의평일코딩
- 자바스크립트 코딩테스트
- 정보처리기사
- react
- VUE
- Java의정석
- typescript
- 정보처리기사요약
- 정보처리기사실기요약
- 타입스크립트
- spring
- 국비코딩
- 국비IT
Archives
- Today
- Total
이안의 평일코딩
[Vue] Vue의 기초(4) - Router, layout, views 본문
반응형
Router
라우터란 웹페이지 간의 이동하는 방법을 말한다. 리액트, 뷰, 앵귤러 모두 라우팅을 이용해서 화면을 갱신한다.
npm install vue-router@4
또는
yarn add vue-router@4
main.js는 가장 먼저 실행되는 javascript 파일이며, 먼저 router를 import해와서 use에 넣어줍니다.
src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router.js';
createApp(App).use(router).mount('#app')
라우터를 사용하기 위해 router.js를 만든다.
src/router.js
import { createWebHistory, createRouter } from "vue-router";
import List from './views/List.vue';
import Home from './views/Home.vue';
import Detail from './views/Detail.vue';
const routes = [
{
path: "/",
component: Home,
},
{
path: "/list",
component: List,
},
{
path: "/detail",
component: Detail,
},
];
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;
layout
components/layout 폴더를 생성하여 기본적인 header, footer를 만들어준다.
src/components/layout/Header.vue
<template>
<div id="nav">
<router-link class="menu" to="/">Home</router-link>
<router-link class="menu" to="/about">About</router-link>
</div>
</template>
<script>
export default {
}
</script>
<style>
#nav {
background: darkslateblue;
padding: 15px;
border-radius: 5px;
}
#nav .menu{
color: white;
padding: 0px;
margin: 10px;
text-decoration: none;
}
</style>
src/components/layout/Footer.vue
<template>
<br><br>
<div class="footer">made by ian</div>
</template>
<script>
export default {
}
</script>
<style>
.footer {
background: #f05945;
color: white;
margin: auto;
width: 30%;
padding: 7px;
border-radius: 30px 5px 30px 5px;
}
#nav .menu{
color: white;
padding: 0px;
margin: 10px;
text-decoration: none;
}
</style>
views
src/views 폴더를 생성하여 뷰 페이지들을 만들어준다.
src/views/Home.vue
<template>
<div>
<h1>Welcome to Home!</h1>
<img src="../assets/logo.png">
</div>
</template>
<script>
export default {
}
</script>
src/views/About.vue
<template>
<div class="black-bg" v-if="modal==true">
<div class="white-bg">
<h4>Modal Title</h4>
<p>내용</p>
<button @click="modal=false">X</button>
</div>
</div>
<div>
<img src="../assets/p0.png" class="phone-img">
<h4 @click="modal=true">{{products[0]}}</h4>
<p>{{price[0]}}만원</p>
<button @click="count[0]++">찜하기</button>
<p>❤ : {{count[0]}}</p>
</div>
</template>
<script>
export default {
name: 'App',
data(){
return {
modal : false,
count : [0, 0, 0],
products : ['아이폰12프로', '아이폰12', '아이폰12미니'],
price : ['130', '110', '90'],
}
},
components: {
}
}
</script>
<style>
body {
margin : 0
}
div {
box-sizing: border-box;
}
.black-bg {
width: 100%; height: 100%;
background: rgba(0,0,0,0.5);
position: fixed; padding: 20px;
}
.white-bg {
width: 100%; background: white;
border-radius: 8px;
padding: 20px;
}
.phone-img {
width: 100%;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
</style>
반응형
결과물
App.vue
<template>
<Header />
<router-link to="/">홈페이지</router-link>
<router-link to="/list">리스트페이지</router-link>
<router-view :apple="apple"/>
<Footer />
</template>
<script>
import Header from './components/layout/Header';
import Footer from './components/layout/Footer';
import appleProduct from './assets/appleProduct.js';
export default {
name: 'App',
data(){
return {
apple : appleProduct
}
},
components: {
Header,
Footer,
}
}
</script>
<router-view />를 이용하면 라우터로 설정한 컴포넌트를 보여준다. props도 보내줄 수 있다. :apple="apple"
<router-link to></router-link>를 이용하면 a 태그처럼 다른 페이지 이동링크를 만들 때 사용한다.
반응형
'Front-end > Vue' 카테고리의 다른 글
[Vue] Vue의 기초(6) - 이벤트리스너 v-model, watcher (0) | 2021.04.13 |
---|---|
[Vue] Vue의 기초(5) - Component, props, custom event (0) | 2021.04.12 |
[Vue] Vue의 기초(3) - 이벤트 핸들러, 조건문 (0) | 2021.04.07 |
[Vue] Vue의 기초(2) - 데이터 바인딩, 반복문 (0) | 2021.04.07 |
[Vue] Vue의 기초(1) - 설치 및 개발환경 구성 (0) | 2021.04.07 |
Comments