URL을 바꾸고 다른 항목을 로드하게 도와주는 routing. vue.js는 SPA를 만들기 때문에 URL과 상호작용 하려면 routing을 사용해야 한다. (확실치 않음)
vue cli로 설치한 프로젝트에 vue-router 패키지 설치.
[프로젝트 위치에서 terminal을 열고 아래 명령어 입력]
npm install --save vue-router
[최신 버전 설치]
npm install --save vue-router@next
npm run serve
이제 프로젝트에 라우터를 등록할 수 있다.
라우터 등록하는 예제를 쉽게 이해하기 위해 프로젝트 예시로 설명.
https://서비스주소.../middleschool
: 중학생 리스트https://서비스주소.../highschool
: 고등학생 리스트router 생성, route 등록, app에 router 사용 등록.
import { createApp } from 'vue';
//vue-router 패키지에서 createRouter, createWebHistory 함수를 import한다.
import { createRouter, createWebHistory } from 'vue-router';
import App from './App.vue';
//router로 이동했을 때 띄울 컴포넌트를 import한다.
import MiddleSchool from './components/MiddleSchool.vue'; //중학생 리스트
import HighSchool from './components/HighSchool.vue'; //고등학생 리스트
//router를 만들고, 어떤 URL을 사용할 것인지, 각 URL에 어떤 component를 띄울건지 알려준다.
//history: routing 히스토리를 어떻게 관리할지 router에게 알려주는 것이다.
//createWebHistory: 브라우저가 사용하는 거 그대로 쓰라는 옵션.
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/middleschool', component: MiddleSchool },
{ path: '/highschool', component: HighSchool }
]
});
const app = createApp(App);
//vue app이 router를 사용하도록 한다.
app.use(router);
app.mount('#app');
component가 나타날 자리 알려준다.
<template>
<the-navigation></the-navigation>
<main>
<!-- router-view 태그를 사용한 곳에 component가 나타난다. -->
<router-view></router-view>
</main>
</template>
탭에 URL 링크를 연결한다.
<template>
<header>
<nav>
<ul>
<li>
<router-link to="/middleschool">중학교</router-link>
</li>
<li>
<router-link to="/highschool">고등학교</router-link>
</li>
</ul>
</nav>
</header>
</template>
이후 vue가 router-link를 a 링크로 만듦.
잘못된 내용은 알려주세요.