본문 바로가기
Front-end/Vue.js

Vue3] Router 만들기

by 카랑현석 2024. 9. 19.

학습 주제

- router을 생성한다.

 

Router 생성 방법

1. 터미널에서 라우터 설치 (최초 1회)

npm install vue-router@4

 

2. main.js 안에 router을 넣는다.

// main.js

import { createApp } from "vue";
// import { createPinia } from "pinia";
import App from "./App.vue";
// import '@/assets/css/main.css'
// import "@/assets/css/fonts.css"; // font
// import "@/assets/css/colors.css"; // color
import router from "./router"; // router
// import "bootstrap/dist/css/bootstrap.css"; // bootstrap
// import "@/assets/css/theme.css";
createApp(App).use(createPinia()).use(router).mount("#app");

 

3. 라우터로 연결할 vue 페이지 생성

src 아래에 views 디렉토리를 만들고 그 안에 vue 페이지들을 만드는 것을 권장

 

4. 라우터 만들기

- router 폴더를 만들고 index.js 파일 생성

예시 전체 코드

// index.js
import { createRouter, createWebHistory } from 'vue-router';

// 1) vue 파일 가져오는 import 문 작성
import Home from '@/views/Home.vue';
import houseRoutes from './house';
import lottoRoutes from './lotto';
import registRoom from './registroom';
import addinfo from '../views/login_regist/AddInfo.vue';
import kakaoLogin from '../views/login_regist/KakaoLogin.vue';

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  // 2) 라우팅 경로 정의
  routes: [
    // 1안 ) 하나씩 라우팅 경로를 지정
    { path: '/', name: 'home', component: Home }, // 처음 들어올 때는 Home을 띄운다.
    { path: '/AddInfo', name:'addInfo', component: addinfo}, // AddInfo 페이지로 이동
    { path: '/kakaoLogin', name:'kakaoLogin', component: kakaoLogin}, // AddInfo 페이지로 이동
    // 2안 ) 여러개의 경로를 묶어서 경로 지정
    ...houseRoutes,
      ...lottoRoutes,
      ...registRoom,
    ],
  });

export default router;

 

- 1) vue 파일 가져오는 import 문 작성

참고 : 경로에 '@/views/Home.vue' 처럼 있다면, @은 src 를 의미한다. 즉, 'src/views/Home.vue' 와 같은 의미

// 1) vue 파일 가져오는 import 문 작성
import Home from '@/views/Home.vue';
import houseRoutes from './house'; // house.js 파일을 가져온다.
import lottoRoutes from './lotto'; // lotto.js 파일을 가져온다.
import registRoom from './registroom'; // registroom.js 파일을 가져온다.
import addinfo from '../views/login_regist/AddInfo.vue'; // AddInfo.vue 파일을 가져온다.
import kakaoLogin from '../views/login_regist/KakaoLogin.vue'; // KakaoLogin.vue 파일을 가져온다.

 

- 2) 라우팅 경로 정의 

1안 ) 하나씩 라우팅 경로를 지정

2안 ) 여러개의 경로를 묶어서 경로 지정

    // 1안 ) 하나씩 라우팅 경로를 지정
    { path: '/', name: 'home', component: Home }, // 처음 들어올 때는 Home을 띄운다.
    { path: '/AddInfo', name:'addInfo', component: addinfo}, // AddInfo 페이지로 이동
    { path: '/kakaoLogin', name:'kakaoLogin', component: kakaoLogin}, // AddInfo 페이지로 이동
    // 2안 ) 여러개의 경로를 묶어서 경로 지정
    ...houseRoutes, // house.js 코드를 수행
      ...lottoRoutes, // lotto.js 코드를 수행
      ...registRoom, // registRoom.js 코드를 수행
// house.js 파일

export default [
  {
    path: "/houses/maps/gosiwons",
    name: "houses/maps/gosiwons",
    component: () => import("../views/House.vue"),
  },
  {
    path: "/houses/maps/onerooms",
    name: "houses/maps/onerooms",
    component: () => import("../views/House.vue"),
  },
  {
    path: '/houses/maps/sharehouses',
    name: 'houses/maps/sharehouses',
    component: () => import('../views/mapPage/Sharehouse.vue'),
  },
  {
    path: '/houses/maps/room',
    name: 'houses/maps/room',
    component: () => import('../views/mapPage/RoomHouse.vue'),
  },

  {
    path: "/houses/sharehouses/:id",
    name: "DetailPage",
    component: () => import("../views/DetailPage.vue"),
  },

  {
    path: "/houses/sharehouses/reviews/:id",
    name: "ReviewPage",
    component: () => import("../views/Review.vue"),
  },
];