Skip to content

Vuetify 集成指南

本指南介绍如何在 Nuxt 3 项目中正确集成 Vuetify 3。

推荐方法:使用官方 Nuxt 模块

Vuetify 提供了官方的 Nuxt 模块 vuetify-nuxt-module,这是最简单、最可靠的集成方式。

安装步骤

1. 安装官方模块

使用 Nuxt CLI 一键安装:

bash
npx nuxi@latest module add vuetify-nuxt-module

这个命令会自动:

  • 安装 vuetify-nuxt-module
  • 更新 nuxt.config.ts 添加模块配置
  • 安装必要的依赖(如果需要)

2. 配置 Nuxt

安装完成后,你的 nuxt.config.ts 应该包含以下配置:

typescript
// nuxt.config.ts
export default defineNuxtConfig({
  compatibilityDate: "2025-07-15",
  devtools: { enabled: true },

  modules: ['vuetify-nuxt-module'],

  vuetify: {
    vuetifyOptions: {
      // Vuetify 配置选项(可选)
    }
  }
})

就这么简单! 不需要手动创建插件,不需要配置 CSS 导入,模块会自动处理一切。

3. 使用 Vuetify 组件

在你的 Vue 文件中直接使用 Vuetify 组件:

vue
<!-- app/app.vue -->
<template>
  <v-app>
    <v-main>
      <v-container>
        <h1>Vuetify + Nuxt 3 Hello World</h1>
        <v-btn color="primary" class="mt-4">
          Hello Vuetify!
        </v-btn>
        <v-card class="mt-4" max-width="400">
          <v-card-title>Welcome to Vuetify</v-card-title>
          <v-card-text>
            This is a simple Hello World example using Vuetify 3 with Nuxt 3.
          </v-card-text>
          <v-card-actions>
            <v-btn color="primary" variant="outlined">Learn More</v-btn>
          </v-card-actions>
        </v-card>
      </v-container>
    </v-main>
  </v-app>
</template>

官方模块的优势

使用 vuetify-nuxt-module 带来以下好处:

  • 零配置:开箱即用,无需手动配置
  • 自动导入:组件按需加载(tree-shaking)
  • SSR 支持:完美支持服务器端渲染
  • 类型安全:完整的 TypeScript 支持
  • 图标集成:简化图标配置
  • 国际化:内置 i18n 支持
  • SASS 变量:轻松自定义主题

高级配置

自定义主题

nuxt.config.ts 中配置 Vuetify 主题:

typescript
export default defineNuxtConfig({
  modules: ['vuetify-nuxt-module'],

  vuetify: {
    vuetifyOptions: {
      theme: {
        defaultTheme: 'dark',
        themes: {
          dark: {
            colors: {
              primary: '#1976D2',
              secondary: '#424242',
              accent: '#82B1FF',
              error: '#FF5252',
              info: '#2196F3',
              success: '#4CAF50',
              warning: '#FFC107',
            }
          }
        }
      }
    }
  }
})

配置图标集

默认使用 Material Design Icons,如需更改:

typescript
export default defineNuxtConfig({
  modules: ['vuetify-nuxt-module'],

  vuetify: {
    vuetifyOptions: {
      icons: {
        defaultSet: 'mdi', // 或 'fa', 'md' 等
      }
    }
  }
})

运行项目

启动开发服务器:

bash
cd web
npm run dev

访问 http://localhost:3000 查看效果。

常用组件示例

按钮

vue
<v-btn color="primary">Primary Button</v-btn>
<v-btn color="secondary">Secondary Button</v-btn>
<v-btn variant="outlined">Outlined Button</v-btn>
<v-btn variant="text">Text Button</v-btn>
<v-btn size="large">Large Button</v-btn>
<v-btn size="small">Small Button</v-btn>

卡片

vue
<v-card>
  <v-card-title>Card Title</v-card-title>
  <v-card-subtitle>Card Subtitle</v-card-subtitle>
  <v-card-text>Card content goes here</v-card-text>
  <v-card-actions>
    <v-btn>Cancel</v-btn>
    <v-btn color="primary">OK</v-btn>
  </v-card-actions>
</v-card>

表单组件

vue
<v-text-field
  label="Username"
  variant="outlined"
/>

<v-textarea
  label="Message"
  variant="outlined"
/>

<v-select
  :items="['Option 1', 'Option 2', 'Option 3']"
  label="Select an option"
  variant="outlined"
/>

<v-checkbox
  label="Accept terms and conditions"
/>

<v-switch
  label="Enable notifications"
/>

布局组件

vue
<v-container>
  <v-row>
    <v-col cols="12" md="6">
      Column 1
    </v-col>
    <v-col cols="12" md="6">
      Column 2
    </v-col>
  </v-row>
</v-container>

导航组件

vue
<v-app-bar color="primary">
  <v-app-bar-title>My App</v-app-bar-title>
  <v-spacer></v-spacer>
  <v-btn icon>
    <v-icon>mdi-menu</v-icon>
  </v-btn>
</v-app-bar>

<v-navigation-drawer>
  <v-list>
    <v-list-item title="Home" prepend-icon="mdi-home"></v-list-item>
    <v-list-item title="About" prepend-icon="mdi-information"></v-list-item>
  </v-list>
</v-navigation-drawer>

故障排除

组件无法识别

如果遇到 Failed to resolve component: v-xxx 错误:

  1. 确保已安装官方模块

    bash
    npm list vuetify-nuxt-module
  2. 检查配置:确认 nuxt.config.tsmodules 包含 'vuetify-nuxt-module'

  3. 重启开发服务器:停止并重新运行 npm run dev

  4. 清除缓存

    bash
    rm -rf .nuxt node_modules/.cache
    npm install

样式未加载

官方模块会自动处理样式,如果样式缺失:

  1. 检查浏览器控制台是否有 CSS 加载错误
  2. 确保 <v-app> 组件作为根容器
  3. 尝试清除 Nuxt 缓存并重启

迁移说明

从手动集成迁移

如果你之前使用手动插件方式集成 Vuetify,迁移步骤:

  1. 安装官方模块

    bash
    npx nuxi@latest module add vuetify-nuxt-module
  2. 删除手动配置

    • 删除 plugins/vuetify.ts
    • nuxt.config.ts 中移除 cssbuild.transpile 配置
  3. 简化配置

    typescript
    // 只需要这些
    export default defineNuxtConfig({
      modules: ['vuetify-nuxt-module']
    })
  4. 重启服务器

更多资源