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 |
Tags
- Stream
- 친절한 SQL 튜닝
- multipart테스트
- javascript case
- CompletableFuture
- findTopBy
- intellij 즐겨찾기
- @TransactionalEventListener
- 자바 ORM 표준 JPA 프로그래밍 정리
- #docker compose
- Linux
- @Transactional Propagation
- java
- 백명석님
- 마이크로 서비스
- git
- ksql
- 리팩토링 2판
- JPA
- ksqldb
- intellij 핵심 단축키
- Spring Cloud Netflix
- intellij favorites
- 리눅스
- IntelliJ
- 자바 ORM 표준 JPA 프로그래밍
- vue.js
- aws
- 원격 브랜 삭제
- HandlerMethodArgumentResolver
Archives
- Today
- Total
시그마 삽질==six 시그마
Vue 라우팅 본문
Vue에 입문하기 좋은 장기효님의 Do it Vue.js 책 추천드립니다.
구매를 원하시는 분은 요기를 클릭해주세요
해당 글은 책 내용을 바탕으로 작성되었습니다.
1. Vue에서 라우팅이란?
웹페이지간 이동방법
싱글 페이지 애플리케이션에서 주로 사용
(서버에 웹페이지 요청해서 갱시하는게 아니라 미리 해당 페이지들을 받아놓고 페이지 이동시 클라이언트의 라우팅 이용 화면을 갱신하는 패턴 적용한 애플리케이션)
리액트,앵귤러 모두 라우팅 사용해서 화면 전환
2. 뷰 라우터
뷰에서 라우팅 기능을 구현할 수 있도록 지원하는 공식 라이브러리
태그 | 설명 |
<router-link to="URL값"> | 페이지 이동태그. 화면에서는 <a>로 표시되며 클릭하면 to에 지정한 URL페이지로 이동 |
<router-view> | 페이지 표시 테그. 변경되는 URL에 따라 해당 컴포넌트를 뿌려주는 영역 |
3. 일반적인 라우터
<!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="/home">Home 컴포넌트로 이동</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>
//라우터 CDN 추가!!!!!!!!!!!!!!!!
<script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script>
<script>
// 3. Home. Login 컴포넌트 내용 정의
var Home = { template: '<div>home</div>' };
var Login = { template: '<div>login</div>' };
// 4. 각 url에 해당하는 컴포넌트 등록★★★
var routes = [
{ path: '/home', component: Home },
{ path: '/login', component: Login }
];
// 5. 뷰 라우터 정의★★★
var router = new VueRouter({
routes
});
// 6. 뷰 라우터를 인스턴스에 등록
var app = new Vue({
router
}).$mount('#app');
</script>
</body>
</html>
라우터의 # 없애는 방법
히스토리 모드를 활용하면됨
var router = new VueRouter({
mode: 'history',
routes
});
4. 네스티드 라우터
한화면에 상위 컴포넌트 1개에 하위 컴포넌트 1개 포함하는 구조
<!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">
<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>
var Animal = {
template: `
<div>
Animal Component
<router-view></router-view>
</div>
`
};
var AnimalCat = { template: '<p>Animal Cat Component</p>' };
var AnimalDog = { template: '<p>Animal dog Component</p>' };
var routes = [
{
path: '/animal',
component: Animal,
children: [
{
path: 'cat',
component: AnimalCat
},
{
path: 'dog',
component: AnimalDog
},
]
}
];
var router = new VueRouter({
routes
});
var app = new Vue({
router
}).$mount('#app');
</script>
</body>
</html>
~index.html#/animal 주소로 url 접속시
~index.html#/animal/cat 주소로 url 접속시
~index.html#/animal/dog 주소로 url 접속시
5. 네임드 뷰
특정페이지 이동시 같은레벨의 여러개의 컴포넌트를 동시에 표시하는 라우팅 방식
<!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>
<div id="app">
<router-view name="header"></router-view> <-- name 속성은 원하는거 사용-->
<router-view></router-view> <-- name이 없을 경우 default임 -->
<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>
var Body = { template: '<div>This is Body</div>' };
var Header = { template: '<div>This is Header</div>' };
var Footer = { template: '<div>This is Footer</div>' };
var router = new VueRouter({
routes: [
{
path: '/',
components: { //<router-view>의 name 속성과 컴포넌트 연결
default: Body,
header: Header,
footer: Footer
}
}
]
})
var app = new Vue({
router
}).$mount('#app');
</script>
</body>
</html>
'프로그래밍 > Javascript' 카테고리의 다른 글
vue 싱글 파일 컴포넌트 체계 (0) | 2020.05.02 |
---|---|
Vue HTTP 통신 (0) | 2020.05.02 |
vue의 생명주기 (0) | 2020.05.02 |
Vue란 무엇인가? (0) | 2020.05.02 |
Vuex (0) | 2020.04.19 |
Comments