20230220 Vue

신래은·2023년 2월 22일
0

새로운 vue를 만들 때,
PS D:\Students\raeeun\work\vue\first> npm install -- save vue-router
원래 파일을 복붙해서 새 파일 만든 후, 새 파일의 이름 변경

export default {
  name: 'App'
  } 
  //에서 
export default {
  name: 'GenreView'
  }

PS D:\Students\raeeun\work\vue\first> vue add router
만약 실행 되지 않는다면, 터미널 창의 우측 상단을 확인해서 cmd로 설정되어 있는지 본다.
cmd상태가 아니라면 F1 -> terminal 검색 -> cmd로 설정 의 단계를 거치면 된다.

vue가 실행할 수 없다고 뜬다면, 재설치 한다.
PS D:\Students\raeeun\work\vue\first> npm install -g vue cli

D:\Students\raeeun\work\vue\first>vue add router
 WARN  There are uncommitted changes in the current repository, it's recommended to commit or stash them first.
? Still proceed? Yes

📦  Installing @vue/cli-plugin-router...


up to date, audited 982 packages in 1s

103 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
✔  Successfully installed plugin: @vue/cli-plugin-router

? Use history mode for router? (Requires proper server setup for index fallback in production) Yes

🚀  Invoking generator for @vue/cli-plugin-router...
⚓  Running completion hooks...

✔  Successfully invoked generator for plugin: @vue/cli-plugin-router
<template>
  <nav>
    <!-- 말그대로 링크 -->
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
  </nav>
  <!-- 해당링크에 들어오면 화면에 보여줄 영역 -->
  <router-view/>
</template>



App.vue의 내용이고

Home.vue의 내용이다.

매핑 경로는 index.js에 있다.

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  }
]

매핑 경로를 바꾸어 보았다.

import { createRouter, createWebHistory } from 'vue-router'
import GenreView from '../views/GenreView.vue'

const routes = [
  {
    path: '/genre',
    name: 'genreview',
    component: GenreView
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

router-link 는 a 태그와 같은 역할

<template>
  <nav>
    <router-link to="/genre" >장르정보</router-link>
  </nav>
  <router-view></router-view>
</template>

router-view에서 GenreView의 내용 표시

서버 실행 시, npm run serve를 터미널에 입력한다.

view 가 화면상에 보이려면, router에 import를 해주어야 한다.
또한, const routes에 경로 및 이름을 추가해 주어야 한다.

import MainView from '@/views/MainView.vue'
const routes = [
  {
    path: '/genre',
    name: 'genreview',
    component: GenreView
  },
  {
    path: '/company',
    name: 'companyview',
    component: CompanyView
  },
  {
    path: '/main',
    name: 'mainview',
    component: MainView
  }
]

아래와 같이 path에 입력한 주소로 연결 시, 페이지가 연결되어야 한다.

children 속성을 부여해서 main 페이지에서 다른 두 페이지로 이동할 수 있도록 한다.
index.js에서 아래처럼 속성 변경

import { createRouter, createWebHistory } from 'vue-router'
import GenreView from '@/views/GenreView.vue'
import CompanyView from '@/views/CompanyView.vue'
import MainView from '@/views/MainView.vue'

const routes = [
  {
    path: '/main',
    name: 'mainview',
    component: MainView,
    children: [
      {
        path: 'genre',
        name: 'genreview',
        component: GenreView
      },
      {
        path: 'company',
        name: 'companyview',
        component: CompanyView
      }
    ]
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

또한, 메인 페이지 view에 아래 내용을 추가한다. (이동할 수 있도록, 링크 연결)

<template>
  <div>
    <h1>메인 페이지</h1>
    <nav class="router_area">
      <router-link to="/main/genre">장르정보</router-link>
      <router-link to="/main/company">기획사정보</router-link>
    </nav>
  </div>
  <router-view></router-view>
</template>
<script>
export default {
  name:"MainView"
}
</script>
<style>

</style>

0개의 댓글