반응형

0. 들어가기

-. vuetify의 components들을 적절히 조합해서 웹페이지 레이아웃을 구성해 본다.

-. navication bar / footer를 분리해서 template 구성하기.

1. 상단 app-bar 만들기 (navigation bar)

-. navigation bar 혹은 app bar로 부르는 상단바를 만들어보자. app-bar의 예제 코드를 간단하게 복사해서 붙여넣으면 끝난다.

<template>
  <div id="app">
    <v-app>
      <v-app-bar color="primary"> v-app-bar </v-app-bar>
    </v-app>
  </div>
</template>

-. 간단하게 왼쪽 햄버거 메뉴바, 페이지 타이틀, 그리고 홈/로그인 버튼을 만들어봤다.

    <v-app-bar color="primary">
      <v-app-bar-nav-icon color="primary">
        <v-icon icon="mdi-menu" />
      </v-app-bar-nav-icon>
      <v-app-bar-title> Erepublik Tools </v-app-bar-title>
      <v-btn variant="text" prepend-icon="mdi-home">HOME</v-btn>
      <v-btn variant="text" prepend-icon="mdi-power">LOGIN</v-btn>
    </v-app-bar>

2. v-card로 본문 채우기

-. 그리고 v-card 컴포넌트를 이용해 포함될 기능들을 디스플레이 하려 했는데, 상단 앱바가 본문 내용을 덮어버린다. 

<v-app>
    <v-app-bar color="primary">
      <v-app-bar-nav-icon color="primary">
        <v-icon icon="mdi-menu" />
      </v-app-bar-nav-icon>
      <v-app-bar-title> Erepublik Tools </v-app-bar-title>
      <v-btn variant="text" prepend-icon="mdi-home">HOME</v-btn>
      <v-btn variant="text" prepend-icon="mdi-power">LOGIN</v-btn>
    </v-app-bar>
    <v-row justify="center">
      <v-col>
        <v-card elevation="5">
          <v-card-title>Active Wars</v-card-title>
          <v-card-subtitle>Show all battlefields</v-card-subtitle>
          <v-card-text>999</v-card-text>
        </v-card>
      </v-col>
      <v-col>
        <v-card elevation="5">
          <v-card-title>Market history</v-card-title>
          <v-card-subtitle>Show market trends</v-card-subtitle>
          <v-card-text>999</v-card-text>
        </v-card>
      </v-col>
      <v-col>
        <v-card elevation="5">
          <v-card-title>Epic history</v-card-title>
          <v-card-subtitle>Show epic trend</v-card-subtitle>
          <v-card-text>999</v-card-text>
        </v-card>
      </v-col>
    </v-row>
  </v-app>

-. HTML로 변환 된 코드 구조를 살펴보면 <Header class="v-toolbar">로 구성된 app-bar 밑에 바로 <div class="v-row">가 따라붙는데, v-row를 <v-main> 태그로 감싸주게 되면 앱바가 겹치는 현상이 사라진다. 
-. vuetify 2 버전 기준의 블로그 글들을 보면 v-content로 감싸라고 되어있는데, 아마 3 버전으로 넘어오면서 중복되는 롤인 v-content는 없애고 v-main으로 전환한 것 같다. *마찬가지로 v-app-bar로 작성 시 클래스가 v-toolbar로 지정되는데, 이것도 장기적으로는 툴바로 통합하려나..싶다.

<v-app>
    <v-app-bar color="primary">
      ...
    </v-app-bar>
    <v-main>
        <v-row justify="center">
          ...
        </v-row>
    </v-main>
  </v-app>

 

3. footer 만들기

-. 페이지 하단에 간략한 정보를 넣는 footer를 작성하자.
-. v-footer 태그에 'app' 프로퍼티를 반드시 넣어줘야 하는데, 넣지 않을 경우 해당 footer가 app의 구성요소로 지정되지 않아, 사이즈가 개념없어지고 지 혼자 돌아다니게 된다.

<v-footer color="primary" app>
  <v-row no-gutters justify="center">
    <v-col cols="12" class="text-center">
      {{ new Date().getFullYear() }} — powered by <strong>Dobby</strong>
    </v-col>
  </v-row>
</v-footer>


4. layout 분리

-. 앞에서 다뤘던 대로, navigation bar와 footer를 분리하여 코드를 조금 간결하게 만들자.
-. 이제 레이아웃은 빼고, 본문만 바꾸면 된다.

~/layouts/default.vue
--
<template>
  <Link/>
  <v-app>
    <v-app-bar color="primary">
    ...
    </v-app-bar>
    <slot />
    <v-footer color="primary" app>
    ...
    </v-footer>
  </v-app>
</template>

----
app.vue
--
<template>
  <NuxtLayout>
      <NuxtPage />
      <v-main>
      ...
      </v-main>
    </div>
  </NuxtLayout>
</template>

5. Page Routing으로 분리

-. 하나의 페이지만 보여줄 건 아니니까 마찬가지로, 전번에 했던대로 app.vue에 메인 코드를 넣는 것이 아니라 페이지 파일로 분리하자.
-. 꽤 많이 간결해졌다.

~/pages/index.vue
--
<template>
  <v-container>
  ...
  </v-container>
</template>

----
app.vue
--
<template>
  <NuxtLayout>
    <v-main>
      <NuxtPage />
    </v-main>
  </NuxtLayout>
</template>
728x90
반응형

'Web > vue.js' 카테고리의 다른 글

nuxt3 환경변수  (0) 2023.06.26
[vue3] nuxt3 + pinia 사용법  (0) 2022.12.16
[vue3/nuxt3/vuetify3] nuxt3 + vuetify3 사용방법  (0) 2022.12.05
[vue/nuxt] nuxt3 layout 사용  (0) 2022.12.01
[vue/nuxt] nuxt3 기본 사용법  (0) 2022.11.27
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기