관리 메뉴

열심히 일한 당신 떠나라

코딩 자율학습단(Vue.js 프런트엔드 개발 입문) 12일차 본문

정보교육/프런트엔드

코딩 자율학습단(Vue.js 프런트엔드 개발 입문) 12일차

@thiskorea 2024. 7. 3. 14:15

[Vue 12일차]
~8.2 뷰 라우터 추가 기능 사용하기
(종이책 p.351-373)

동적 경로 매칭

// src/router/index.js

import { createRouter, createWebHistory } from "vue-router";
import HomeView from "@/views/HomeView.vue";
import UserView from "@/views/UserView.vue";

const router = createRouter({
    history: createWebHistory(),
    routes: [
        {
            path: '',
            name: 'home',
            component: HomeView,
        },
        {
            path: '/about',
            name: 'about',
            component: () => import('../views/AboutView.vue'),
        },
        {
            path: '/:user/:id',
            name: 'user',
            component: UserView
        }
    ],
});

export default router;
// src/views/UserView.vue

<template>
    <div>
      <h1>User Profile</h1>
      <p>User: {{ user }}</p>
      <p>ID: {{ id }}</p>
    </div>
  </template>
  
  <script>
  export default {
    name: 'UserView',
    computed: {
      user() {
        return this.$route.params.user;
      },
      id() {
        return this.$route.params.id;
      }
    }
  }
  </script>
  
  <style scoped>
  h1 {
    color: #42b983;
  }
  </style>
// src/App.vue

<script setup>
import { RouterLink, RouterView } from 'vue-router';
</script>

<template>
  <nav>
    <RouterLink to="/">home</RouterLink><br>
    <RouterLink to="/about">about</RouterLink>
  </nav>
  <RouterView />
</template>

https://localhost:5173/usr/John 으로 주소를 타이핑하면

매개변수 가져오기

/user/info?name=mike&age=30

URL 끝에 ?로 매개변수를 붙여 요청하는 경우 ?뒤에 오는 일련의 문자를 쿼리 스트링이라 한다.

쿼리 스트링(query string)은 대부분 URL을 요청할 때 추가 정보를 제공하기 위해 사용.

// src/views/UserView.vue

<template>
    <div>
      <h1>User Profile</h1>
      <p>User: {{ user }}</p>
      <p>ID: {{ id }}</p>
    </div>
  </template>
  
  <script>
  export default {
    name: 'UserView',
    computed: {
      user() {
        return this.$route.params.user;
      },
      id() {
        return this.$route.params.id;
      }
    },
    beforeMount() {
        const name = this.$route.query.name;
        const age = this.$route.query.age;
        console.log(name);
        console.log(age);
    }
  }
  </script>
  
  <style scoped>
  h1 {
    color: #42b983;
  }
  </style>

예외 처리

정의되지 않은 패스 값을 사용해 애플리케이션에 접근했다면 에러 처리

프로그래밍 방식 탐색

라우터 인스턴스에 내장된 라우트 전환 메서드를 사용해 라우트를 탐색(전환)하는 것

라우트 전환 메서드

.push(path)

.replace(path)

.go(n)

.back()

.forward()

//src/views/HomeView.vue

<template>
    <h1>Home View</h1>
    <nav>
        <a href="#" @click.prevent="$router.push('/')">.push</a>
        <a href="#" @click.prevent="$router.push('/about')">.replace</a>
        <a href="#" @click.prevent="$router.go(-1)">.go</a>
        <a href="#" @click.prevent="$router.forward">.forward</a>
        <a href="#" @click.prevent="$router.back()">.back</a>
    </nav>
</template>
<script>
export default {
    methods: {
        navigateToHome() {
            this.$router.push('/');
        },
        replaceWithAbout() {
            this.$router.replace('/about');
        },
        goBack() {
            this.$router.go(-1);
        },
        goForward() {
            this.$router.go(1);
        },
    },
}
</script>