728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ vue-router ์ค์น ๋ฐ ์ ํ ํ๊ธฐ
- ํ์ด์ง๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๊ณ ์ถ์ ๋ Router ๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค.
- Vue ์์๋ vue-router ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ฉด Router ๋ฅผ ์ด์ฉํ ์ ์๋ค.
๐ค vue-router 4 ๋ฒ์ ์ค์นํ๊ธฐ
npm install vue-router@4
- ์์ ๊ฐ์ด ํฐ๋ฏธ๋์ ์ ๋ ฅํด์ vue-router 4 ๋ฒ์ ์ ์ค์นํ๋ค.
- yarn ์ด ์ค์น๋์ด์๋ค๋ฉด npm install ๋์ ์ yarn add ๋ฅผ ์ด์ฉํด๋ ๋๋ค.
- vue-router ๋ฅผ ์ค์นํ๊ธฐ ์ ์ ๋ง์ฝ npm run serve ๋ฅผ ์ ๋ ฅํ์ฌ ํ๋ก์ธ์ค๊ฐ ์งํ์ค์ด๋ผ๋ฉด ์ด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ๋ค์์ ์งํํด์ฃผ์ด์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๐ค router.js ํ์ผ ๋ง๋ค๊ธฐ
import { createWebHistory, createRouter } from "vue-router";
const routes = [
{
path: "/๊ฒฝ๋ก",
component: importํด์จ ์ปดํฌ๋ํธ,
}
];
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;
- vue-router ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด src ํด๋ ์์ router.js ํ์ผ์ ๋ง๋ค์ด์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- path ์ component ๋ง ์์ ํน์ ์ถ๊ฐํด๊ฐ๋ฉฐ ํ์ด์ง๋ค์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
๐ค main.js ํ์ผ์ router.js ํ์ผ import ํด์ฃผ๊ธฐ
import router from './router.js'
createApp(App).use(router).mount('#app')
- main.js ํ์ผ์ router.js ํ์ผ์ router ๋ผ๋ ์ด๋ฆ์ผ๋ก import ํด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ createApp(App).mount('#app') ์ด๋ผ๋ ์ฝ๋ ์ค๊ฐ์ .use(router) ๋ผ๋ ์ฝ๋๋ ์ฝ์ ํด์ฃผ์๋ค.
๐ค App.vue ํ์ผ์ <router-view></router-view> ์ถ๊ฐํ๊ธฐ
- App.vue ํ์ผ์ ์๋ <template></template> ๋ด์ ์ํ๋ ์์น์ <router-view></router-view> ๋ฅผ ์ถ๊ฐํ๋ฉด Router ๋ก ๊ตฌ๋ถ๋ ํ์ด์ง๋ฅผ ํด๋น ์์น์ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋ค.
- ๋ง์ฝ ์ ์กํด์ผํ props ๊ฐ ์๋ค๋ฉด, ๊ธฐ์กด์ Component ์ฌ์ฉํ ๋์ props ๋ฅผ ์ ์กํ ๋ฐฉ์๊ณผ ๋์ผํ๊ฒ <router-view> ์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
๐ค router.js ํ์ผ์ Route ๋ง๋ค๊ธฐ
import List from './components/List.vue';
const routes = [
{
path: '/list',
component: List,
}
];
- ์ด์ router.js ํ์ผ์์ ํน์ ๊ฒฝ๋ก๋ก ์ ์ํ์ ๋ ํน์ Component ๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ ํด์ฃผ๋ฉด ๋๋ค.
- ์๋ฅผ ๋ค์ด, /list ๊ฒฝ๋ก๋ก ์ ์ํ์ ๋ List.vue ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์งํํ๋ฉด ๋๋ค.
- List.vue ํ์ผ์ List ๋ผ๋ ์ด๋ฆ์ผ๋ก import ํ๋ค.
- path ๋ถ๋ถ์ '/list' ๋ผ๊ณ ๊ฒฝ๋ก๋ฅผ ์์ฑํ๋ค.
- component ๋ถ๋ถ์ List.vue ๋ฅผ import ํ ๋ ์ง์ด์ค ์ด๋ฆ์ธ List ๋ก ์์ฑํ๋ค.
const routes = [
{
path: "/",
component: Main,
},
{
path: "/list",
component: List,
}
];
- ๋ง์ฝ Route ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ์์ ๊ฐ์ด object ์๋ฃํ์ผ๋ก ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
๐ค ํ์ด์ง ์ด๋ ๋งํฌ ๋ง๋ค๊ธฐ
<router-link to="/list">์ด๋ํ๊ธฐ</router-link>
- <a></a> ์ ์ ์ฌํ๊ฒ ํ์ด์ง ์ด๋ ๋งํฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ์์ ๊ฐ์ด <router-link></router-link>๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- to="์ด๋ํ ๊ฒฝ๋ก" ์ ๊ฐ์ ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ํ๋ ๋๋ก ๊ฒฝ๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] Nested routes ์ push ํจ์ ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.04.05 |
---|---|
[Vue.js] URL ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฉํ ์์ธ ํ์ด์ง ๋ง๋ค๊ธฐ (0) | 2022.04.05 |
[Vue.js] ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ ํตํด ๋ธ๋ก๊ทธ ๊ธ๋ชฉ๋ก ๋ง๋ค๊ธฐ (0) | 2022.04.05 |
[Vue.js] Blog ํ๋ก์ ํธ ์์ฑํ๊ธฐ ๋ฐ Bootstrap ์ฌ์ฉํ๊ธฐ (0) | 2022.04.05 |
[Vue.js] Vue ์ ๋ผ์ดํ์ฌ์ดํด ํ์ฉํ๊ธฐ (0) | 2022.04.04 |