신비한 개발사전

Vuetify 시작하기 본문

Frontend

Vuetify 시작하기

jbilee 2024. 8. 19. 02:01

Vuetify는 Vue.js 전용 UI 프레임워크다. 웹페이지를 만들 때 필요한 웬만한 컴포넌트들이 이미 Vuetify에 준비돼 있어서 손쉽게 가져다 쓸 수 있다.

 

Vue.js에 설치

Vue.js 프로젝트에서는 'vuetify' 패키지를 설치하고 createVuetify() 함수로 vuetify 객체를 생성한다.

 

패키지 설치:

pnpm i vuetify

 

main.ts 파일에 객체 추가:

import { createApp } from "vue";
import App from "./App.vue";

// Vuetify 관련 import
import "vuetify/styles";
import { createVuetify } from "vuetify";
import * as components from "vuetify/components";
import * as directives from "vuetify/directives";

// Vuetify 객체 생성
const vuetify = createVuetify({
  components,
  directives,
});

const app = createApp(App);
app.use(vuetify); // app에 추가
app.mount('#app');

 

위 예시처럼 컴포넌트와 디렉티브를 전부 import하면 tree-shaking이 되지 않으니, Vite 또는 Webpack 환경에 따라 각자의 plugin 패키지를 설치해 필요한 컴포넌트와 디렉티브만 사용하도록 설정하는 것도 가능하다.

 

Nuxt.js에 설치 (module)

Nuxt module로 Vuetify를 설치할 때의 세팅법이다.

pnpx nuxi@latest module add vuetify-nuxt-module

 

위 명령어로 모듈을 설치하면 'nuxt.config.ts' 파일에 Vuetify 모듈이 자동으로 추가된다:

export default defineNuxtConfig({
  modules: ["vuetify-nuxt-module"],
});

 

Nuxt.js에 설치 (plugin)

Nuxt 환경에서 plugin으로 Vuetify를 설치하는 방법도 정리해봤다.

 

패키지 설치:

pnpm i -D vuetify vite-plugin-vuetify
pnpm i @mdi/font

 

패키지 설치 후 'nuxt.config.ts' 파일에는 Vuetify plugin을 사용할 수 있도록 아래 코드를 추가해준다.

import vuetify, { transformAssetUrls } from "vite-plugin-vuetify";

export default defineNuxtConfig({
  build: {
    transpile: ['vuetify'],
  },
  modules: [
    (_options, nuxt) => {
      nuxt.hooks.hook('vite:extendConfig', (config) => {
        config.plugins.push(vuetify({ autoImport: true }))
      })
    },
    //...
  ],
  vite: {
    vue: {
      template: {
        transformAssetUrls,
      },
    },
  },
});

 

이후 '/plugins' 폴더에 'vuetify.ts' 파일을 만들어준다. 이때, Nuxt의 서버 컴포넌트를 지원할 수 있도록 createVuetify() 함수 안에 'ssr'값을 'true'로 넣어준다.

import "@mdi/font/css/materialdesignicons.css";
import "vuetify/styles";
import { createVuetify } from "vuetify";

export default defineNuxtPlugin((app) => {
  const vuetify = createVuetify({
    ssr: true,
  });
  app.vueApp.use(vuetify);
});

 

 

Vuetify를 설치했으면, 마지막으로 Vuetify의 컴포넌트를 사용할 수 있도록 'app.vue' 또는 최상단 레이아웃 .vue 파일에 <v-app> 컴포넌트로 모든 자식 컴포넌트들을 wrap해준다.

<!-- app.vue 파일 예시 -->
<template>
  <v-app>
    <NuxtPage />
  </v-app>
</template>

<!-- /layouts/default.vue 파일 예시 -->
<template>
  <v-app>
    <slot />
  </v-app>
</template>

 

Vuetify 역시 MUI처럼 익숙해지기만 하면 내가 원하는 모양새의 웹을 빠르게 구현할 수 있다.

'Frontend' 카테고리의 다른 글

프론트엔드의 Insomnia 시작 가이드  (0) 2024.09.12
UnoCSSㅡNext.js 셋업  (0) 2024.09.10
MUI 컴포넌트의 SSR flickering 이슈 해결법  (0) 2024.08.03
FSD 아키텍쳐 알아보기  (0) 2024.08.01
ARIA란?  (0) 2024.07.31