on
[ Vue.js ] Router / Routing 정리
[ Vue.js ] Router / Routing 정리
728x90
반응형
안녕하세요 상훈입니다.
Vue.js 에서 라우팅을 정리해볼까합니다.
Route, Routing... Laravel 에서는 web.php가 그 역할을 가지고 있습니다.
하지만 저는 Front Framework 부분에서 그 내용을 처리하는 것이 더 옳다고 생각하기 때문에 vue-route에도 신경을 써보았습니다.
처음에는 진짜 정말 ? ? ? 하는 순간에 파일이 휙휙 지나가고 내가 한 게 이게 무엇인가...나는 감자다 이랬는데 여러 번 반복하여 자료를 살펴보고 직접 세팅을 해보았으며 정리를 해보니 대략적인 감을 잡았습니다.
Vue.js 3 에서는 아직 적용해보지 않았고, 현재는 Vue.js 2 만 적용해본 상태입니다.
기본 구성은 이렇습니다.
기본 구성은 위와 같습니다.
반응형
0. Vue project를 설치하고, vue-router를 설치합니다.
$ vue create '프로젝트명'
$ npm i -S vue-router
$ npm install
1. router/index.js 생성
2. views/... : vue 파일들 생성
3. main.js 수정
4. App.vue 수정
이렇게 진행하도록 하겠습니다.
1. router/index.js 생성
router 폴더와 그 안에 index.js를 생성하겠습니다. 그리고 아래와 같은 코드를 작성해줍니다.
import Vue from 'vue' import VueRouter from 'vue-router' import FirstPage from '@/views/first-page.vue' import SecondPage from '@/views/second-page.vue' import MainPage from '@/views/main-page.vue' Vue.use(VueRouter) const routes = [ { path: '/', name: 'MainPage', component: MainPage }, { path: '/FirstPage', name: 'FirstPage', component: FirstPage }, { path: '/SecondPage', name: 'SecondPage', component: SecondPage }, ] const router = new VueRouter({ mode: 'history', routes }) export default router
vue route 관련한 내용을 import.
VueRouter를 사용한다고 선언.
routes의 경로를 직접 지정 저장. => Web.php가 하는 라우팅 역할
router를 출력(?) 내보내기(?) 느낌 실행
2. views/... : vue 파일들 생성
views라는 폴더를 생성해주시고, 그 안에 해당되는 .vue파일들을 생성해줍니다.
3개의 .vue 파일을 router 이름과 동일하게 생성
여기서 잘 보시면 파일제목 <-> route 했던부분의 이름이 다른 것 을 확인하실 수 있습니다.
바로 snake-case와 camel-case를 지원하는 것인데요, 이에 대해서는 아시리라 생각하고 넘어가겠습니다.
3. main.js 수정
main.js
기존에 src/main.js 에 있던 파일을 살짝 수정하도록 하겠습니다.
import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App), }).$mount('#app')
변경된 부분은
1. import router from './router'
2. Vue 객체 내에 router 선언
입니다.
이 곳에서 router를 호출하게 되고, app을 렌더링 시켜줍니다.
4. App.vue 수정
마지막으로 App.vue 수정입니다. 이곳에서는 쓸데없는 기존의 부분들을 모두 걷어내주고, 아래와 같이 작성합니다.
Router Start Main Page | First Page | Second Page export default { name: 'App', } #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; }
이 두 가지만 잘 알고 있으면 됩니다. 나머지는 없애도 됩니다.
a 태그 라고 생각하세요
router link 는 a 태그와 생김새가 동일합니다. 해당 태그를 클릭하면 (1)의 index.js에 의해 routing되어 해당되는 경로로 이동합니다.
router-view 는 해당되는 view를 출력해줍니다. 대신 contents만 갈아끼워준다 는 느낌이 강합니다.
728x90
[ F12 개발자모드 ] 를 켜서 확인해주시면 내의 태그들만 reload 되기 때문입니다.
이제 $ npm run serve 를 통해 서버를 띄워주시면 아래의 결과가 나옵니다.
라우팅 어려운것,,,,
위의 내용 중에 오류나 잘못 서술한 부분이 있다면
코멘트 남겨주시면 감사하겠습니다.
뷰 초보자이지만 천천히 꾸준히 나아가려고 합니다. 감사합니다.
제가 정리한 전체적인 흐름입니다.
강의는 짐코더님의 Vuetify 강좌 중에서 반복적으로 연습해보았습니다.
728x90
반응형
from http://code-hoon.tistory.com/110 by ccl(A) rewrite - 2021-11-03 22:26:28