// /pages/index.vue
<template>
<div>
this is index view from pages
</div>
</template>
/pages/index.vue 라는 파일이 있을 때 app.vue의 NuxtPage 가 /pages/index.vue 가 되는 것 입니다.
root 경로 확인
✔ Vue.js3 와 Nuxt.js 의 차이점
일반 Vue 프로젝트에서는
1) main.js - route 사용 선언 2) App.vue - RouteLink, RouteView 로 작성
반면에 Nuxt 에서는 조금 다르더라구요.
처음에는 NuxtPage 말고 Nuxt 태그만 작성했다가 페이지 출력이 되지 않아서 왜 자꾸 안되지??? (여러 기술 블로그를 염탐했을 때) 하다가, 아래의 Nuxt.js3 강의를 올려주신 익숙하신 Vue 유튜버 링크(맨 아래 링크 첨부)에 들어가 빠르게 감아서 NuxtLink 부분만 보고 고치게되었습니다.
✔ 조금 더 나아가기 🚀
그렇다면 /pages/directory/directory/... 이런식으로 하위 폴더가 있을 때는 어떻게 해야할지 잠깐 생각해보았고,
Nuxt 프로젝트 특유의 경로 자동 감지를 생각하게 되어, 간단하게 구현하였습니다.
/pages/inside/insidePage.vue/app.vue
이렇게 슬래쉬로 하위 디렉터리 구분을 할 수 있었습니다.
😎 마치며
왜 이런 간단한 것 하나조차 Vue.js 프로젝트와 달라서 이렇게 애를 먹이는 것인지,,, 하나씩 그래서 설정하고 확인하고... 라우팅까지 신경쓰면서 살고 있네요. 기존에는 1분 걸릴게 Nuxt로 하니 10분도 넘게 찾고 있었네요.
어제는 프로젝트 만들고 띄우지도 못해서ㅋㅋㅋㅋ 지웠다가 새로운 프로젝트 생성하고 난리였습니다.
1.props로 params를 전달받을 것을 명시 2. item 키를 가진 문자를 받아올 것으로 명시 (JSON.parse를 통해 객체화 실시예정) 3. item 객체를 할당할 ref 선언(data) 4. 컴포넌트가 마운트 완료되고, params 로 받아온 객체를 할당.
<template>
// 각각의 id를 가진 리스트를 v-for로 출력.
<div class="movie" v-for="movie in movies" :key="movie.imdbID">
<router-link :to="'/movie/' + movie.imdbID" />
// router-link를 통해 반복문을 통해 출력된 movie 객체의 id값을 전달하고자 한다.
</template>
여기서 잘 보시면 파일제목 <-> 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 수정입니다. 이곳에서는 쓸데없는 기존의 부분들을 모두 걷어내주고, 아래와 같이 작성합니다.