在vue中使用ant-design-vue组件

本文介绍如何在Vue项目中引入并使用Ant Design Vue组件库,包括安装步骤、基本配置及按钮、导航栏和表单样式的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue中使用ant-design-vue组件



官方地址:Ant Design Vue

1. 安装

首先使用vue-cli创建项目,然后进入项目,使用npm安装ant-design-vue库:

npm i --save ant-design-vue@next

然后在package.json文件中的dependencies中看见刚刚下载的库:

在这里插入图片描述

2. 引入组件库

然后在main.js中引入,注意要按照顺序:

# 引入组件库
import ant from 'ant-design-vue'
# 引入样式表
import 'ant-design-vue/dist/antd.css'

引入顺序如图所示:

在这里插入图片描述

接着需要use该组件库的句柄:

在这里插入图片描述

然后在要使用的vue文件中也引入组件库,比如我要在项目默认的App.vue中使用组件库:

import 'ant-design-vue/dist/antd'

在这里插入图片描述

3. 使用

3.1 按钮样式

直接将代码复制到component标签中即可,要注意component标签中只能允许有一个根标签。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2 导航栏样式

可以选择颜色的导航栏

<template>
  <div>
    <a-switch :checked="mode === 'vertical'" @change="changeMode" />
    Change Mode
    <span class="ant-divider" style="margin: 0 1em" />
    <a-switch :checked="theme === 'dark'" @change="changeTheme" />
    Change Theme
    <br />
    <br />
    <a-menu
      style="width: 256px"
      v-model:openKeys="openKeys"
      v-model:selectedKeys="selectedKeys"
      :mode="mode"
      :theme="theme"
    >
      <a-menu-item key="1">
        <template #icon>
          <MailOutlined />
        </template>
        Navigation One
      </a-menu-item>
      <a-menu-item key="2">
        <template #icon>
          <CalendarOutlined />
        </template>
        Navigation Two
      </a-menu-item>
      <a-sub-menu key="sub1">
        <template #icon>
          <AppstoreOutlined />
        </template>
        <template #title>Navigation Three</template>
        <a-menu-item key="3">Option 3</a-menu-item>
        <a-menu-item key="4">Option 4</a-menu-item>
        <a-sub-menu key="sub1-2" title="Submenu">
          <a-menu-item key="5">Option 5</a-menu-item>
          <a-menu-item key="6">Option 6</a-menu-item>
        </a-sub-menu>
      </a-sub-menu>
      <a-sub-menu key="sub2">
        <template #icon>
          <SettingOutlined />
        </template>

        <template #title>Navigation Four</template>
        <a-menu-item key="7">Option 7</a-menu-item>
        <a-menu-item key="8">Option 8</a-menu-item>
        <a-menu-item key="9">Option 9</a-menu-item>
        <a-menu-item key="10">Option 10</a-menu-item>
      </a-sub-menu>
    </a-menu>
  </div>
</template>
<script>
import { defineComponent, reactive, toRefs } from 'vue';
import {
  MailOutlined,
  CalendarOutlined,
  AppstoreOutlined,
  SettingOutlined,
} from '@ant-design/icons-vue';
export default defineComponent({
  setup() {
    const state = reactive({
      mode: 'inline',
      theme: 'light',
      selectedKeys: ['1'],
      openKeys: ['sub1'],
    });

    const changeMode = checked => {
      state.mode = checked ? 'vertical' : 'inline';
    };

    const changeTheme = checked => {
      state.theme = checked ? 'dark' : 'light';
    };

    return { ...toRefs(state), changeMode, changeTheme };
  },

  components: {
    MailOutlined,
    CalendarOutlined,
    AppstoreOutlined,
    SettingOutlined,
  },
});
</script>

在这里插入图片描述


顶部导航栏

<template>
  <a-menu v-model:selectedKeys="current" mode="horizontal">
    <a-menu-item key="mail">
      <template #icon>
        <mail-outlined />
      </template>
      Navigation One
    </a-menu-item>
    <a-menu-item key="app" disabled>
      <template #icon>
        <appstore-outlined />
      </template>
      Navigation Two
    </a-menu-item>
    <a-sub-menu>
      <template #icon>
        <setting-outlined />
      </template>
      <template #title>Navigation Three - Submenu</template>
      <a-menu-item-group title="Item 1">
        <a-menu-item key="setting:1">Option 1</a-menu-item>
        <a-menu-item key="setting:2">Option 2</a-menu-item>
      </a-menu-item-group>
      <a-menu-item-group title="Item 2">
        <a-menu-item key="setting:3">Option 3</a-menu-item>
        <a-menu-item key="setting:4">Option 4</a-menu-item>
      </a-menu-item-group>
    </a-sub-menu>
    <a-menu-item key="alipay">
      <a href="https://antdv.com" target="_blank" rel="noopener noreferrer">
        Navigation Four - Link
      </a>
    </a-menu-item>
  </a-menu>
</template>
<script>
import { defineComponent, ref } from 'vue';
import { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';
export default defineComponent({
  setup() {
    const current = ref(['mail']);
    return {
      current,
    };
  },

  components: {
    MailOutlined,
    AppstoreOutlined,
    SettingOutlined,
  },
});
</script>

在这里插入图片描述


3.3 表单样式

内联登录栏

<template>
  <a-form
    layout="inline"
    :model="formState"
    @finish="handleFinish"
    @finishFailed="handleFinishFailed"
  >
    <a-form-item>
      <a-input v-model:value="formState.user" placeholder="Username">
        <template #prefix><UserOutlined style="color: rgba(0, 0, 0, 0.25)" /></template>
      </a-input>
    </a-form-item>
    <a-form-item>
      <a-input v-model:value="formState.password" type="password" placeholder="Password">
        <template #prefix><LockOutlined style="color: rgba(0, 0, 0, 0.25)" /></template>
      </a-input>
    </a-form-item>
    <a-form-item>
      <a-button
        type="primary"
        html-type="submit"
        :disabled="formState.user === '' || formState.password === ''"
      >
        Log in
      </a-button>
    </a-form-item>
  </a-form>
</template>
<script>
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue';
import { defineComponent, reactive } from 'vue';
export default defineComponent({
  setup() {
    const formState = reactive({
      user: '',
      password: '',
    });

    const handleFinish = values => {
      console.log(values, formState);
    };

    const handleFinishFailed = errors => {
      console.log(errors);
    };

    return {
      formState,
      handleFinish,
      handleFinishFailed,
    };
  },

  components: {
    UserOutlined,
    LockOutlined,
  },
});
</script>

在这里插入图片描述


### 如何在项目中引入和配置 ant-design-vue #### 安装依赖包 为了能够在 Vue 项目中使用 `ant-design-vue` 组件库,首先需要通过 npm 或者 yarn 来安装该库以及样式资源。对于基于 Webpack 的构建工具来说,还需要额外安装 LESS 及其加载器来处理 Ant Design 提供的 `.less` 文件[^5]。 ```bash npm install ant-design-vue --save yarn add less less-loader -D ``` #### 整体引入方式 如果希望一次性导入所有的组件和服务,则可以在项目的入口文件(通常是 main.js 中)执行如下操作: ```javascript import Vue from 'vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; Vue.use(Antd); ``` 这种方式简单快捷,但是会增加打包体积,因为即使某些功能未被实际调用也会被打包进去[^1]。 #### 按需引入方式 为了避免不必要的性能开销并减小最终的应用程序大小,建议采用按需加载的方式只引入需要用到的具体模块。这可以通过在 src 目录下新建 plugins 文件夹,并在其内部创建名为 antd.js 的 JavaScript 文件实现[^3]。 ```javascript // src/plugins/antd.js import Vue from 'vue' import { Button, Checkbox, DatePicker, Form, Input, message, Modal } from 'ant-design-vue' import "ant-design-vue/dist/antd.less" Vue.use(Button) Vue.use(Checkbox) Vue.use(DatePicker) Vue.use(Form) Vue.use(Input) Vue.prototype.$message = message; Vue.prototype.$confirm = Modal.confirm; export default {}; ``` 接着,在 main.js 中注册这个插件: ```javascript import './plugins/antd'; ``` 这样做不仅能够有效减少应用的整体尺寸,还能让开发者更加灵活地管理各个页面所需的特定 UI 控件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值