vue.js/vue.js 2

54. <vue-news> 프로젝트 | router | router-view | router-link

DEV-Front 2022. 8. 5. 14:34
반응형


<main.js>

import Vue from 'vue'
import App from './App.vue'
import { router }  from './routes/index.js';

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  router
}).$mount('#app')

routes 폴더 안 <index.js>

mode: 'history' 사용 전 

mode: 'history' 사용 후 

import Vue from 'vue'
import VueRouter from 'vue-router'
import NewsView from '../views/NewsView.vue'
import AskView from '../views/AskView.vue'
import JobsView from '../views/JobsView.vue'
import ItemView from '../views/ItemView.vue'
import UserView from '../views/UserView.vue'

Vue.use(VueRouter);

export const router = new VueRouter({
    mode: 'history', // # 표시 삭제
    routes: [
        {
            path: '/',
            redirect: '/news',
        },
        {
            path: '/news', // url에 대한 정보가 담기는곳, url주소
            component: NewsView, // url 주소로 갔을때 표시될 컴포넌트
        },
        {
            path: '/ask',
            component: AskView,
        },
        {
            path: '/jobs',
            component: JobsView,
        },
        {
            path: '/item',
            component: ItemView,
        },
        {
            path: '/user',
            component: UserView,
        },
    ]
});

<App.vue>

<router-view>

태그는 페이지의 url이 이동했을 때 그 범위내에서 뿌려주는 태그

<template>
  <div id="app">    
    <tool-bar></tool-bar>

    <router-view/>
  </div>
</template>

<script>
import ToolBar from './components/ToolBar.vue';

export default {
  components:{
    ToolBar,
  }
}
</script>

<style>
body{
  padding: 0;
  margin: 0;

}
</style>

<ToolBar.vue>

<router-link to="/경로"> 

<router-link to="/news">

<template>
    <div class="header">
        <router-link to="/news">News</router-link> |
        <router-link to="/ask">Ask</router-link> |
        <router-link to="/jobs">Jobs</router-link>
    </div>
</template>

<script>
export default {
};
</script>

<style scoped>
.header{
    color: #fff;
    background-color: #42b883;
    display: flex;
    padding: 8px;
}
.header .router-link-exact-active{
    color: #354952;
}
.header a {
    color: #fff;
}
</style>
반응형