: vue-router 4버전 이상을 설치한다.
#shell
// 기존의 vue-router 버전이 낮을 경우 삭제한다.
npm uninstall vue-router --save
npm i vue-router@next --save
// vue-router
import { createWebHistory, createRouter } from 'vue-router';
const routes = [
{
path: '/',
name: 'Home',
// 1.
component: () => import('@/views/Home.vue'),
},
];
const router = createRouter({
// 2.
history: createWebHistory(),
routes,
});
export default router;
- Webpack의 코드 스플리팅을 이용해서 현재 라우트에 해당하는 컴포넌트를 동적 로딩한다. 이를 통해서 페이지의 초기 로딩 속도를 줄일 수 있다.
- window history 모드를 적용 (vue-router 이전 버전에서는
mode: 'history'
)
전체적으로 이전 버전과 사용하는 방법은 거의 유사한것 같다.
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import router from '@/router/';
// css
import '@/assets/scss/_index.scss';
const app = createApp(App);
app.use(router);
app.mount('#app');
<!-- App.vue -->
<template>
<div class="app">
<AppHeader />
<main class="app-main">
<!-- 컴포넌트가 렌더링되는 영역 -->
<router-view></router-view>
</main>
<AppFooter />
</div>
</template>
이전 버전에서는
path: '*'
로 작성하면 됐었지만 vue-router-next에서는
path: "/:catchAll(.*)"
로 작성해야한다.
// src/router/index.js
routes: [
{
path: "/:catchAll(.*)",
component: () => import("@/views/NotFound.vue"),
},
]