Ant Design Vue 是一个基于 Vue.js 的企业级前端解决方案,提供了丰富的组件库和设计语言。它包括按钮、表单、表格等多种基础组件,以帮助开发者高效构建用户界面。Ant Design Vue 具备一致性、丰富性和易用性等特点,并适用于多种企业级后台应用和管理系统。
Ant Design Vue 是 Ant Design 家族的一员,是一个企业级中后台产品的 Vue.js 设计语言实现。基于 Ant Design 的设计语言和组件库,Ant Design Vue 提供了丰富的 Vue 组件,包括但不限于按钮、表单、表格、导航等,以帮助开发者高效地构建用户界面。
npm install vue
npm install ant-design-vue
import Vue from 'vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; Vue.use(Antd);
Ant Design Vue 提供了许多基础组件,如按钮、输入框、表格等。下面将介绍如何使用这些组件。
按钮组件是 Ant Design Vue 中的基础组件之一。以下是按钮组件的基本使用示例:
<template> <a-button type="primary">Primary Button</a-button> </template>
输入框组件用于数据输入,支持多种输入类型,如文本、数字等。以下是如何使用输入框组件的示例:
<template> <a-input placeholder="请输入内容"></a-input> </template>
表格组件用于展示结构化数据,支持分页、排序等功能。以下是表格组件的基本使用示例:
<template> <a-table :columns="columns" :data-source="data"></a-table> </template> <script> export default { data() { return { columns: [ { title: '姓名', dataIndex: 'name' }, { title: '年龄', dataIndex: 'age' }, { title: '地址', dataIndex: 'address' }, ], data: [ { name: '张三', age: 25, address: '上海市' }, { name: '李四', age: 30, address: '北京市' }, ], }; }, }; </script>
表单组件用于输入和验证数据,支持多种输入类型和验证规则。以下是如何使用表单组件的示例:
<template> <a-form :form="form" @submit="handleSubmit"> <a-form-item v-for="item in formItems" :key="item.key" :label="item.label"> <a-input v-decorator="item.decorator" /> </a-form-item> <a-form-item> <a-button type="primary" html-type="submit">提交</a-button> </a-form-item> </a-form> </template> <script> export default { data() { return { formItems: [ { key: 'name', label: '姓名', decorator: [ 'name', { rules: [{ required: true, message: '请输入姓名' }], }, ], }, { key: 'age', label: '年龄', decorator: [ 'age', { rules: [{ required: true, message: '请输入年龄' }], }, ], }, ], }; }, methods: { handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { console.log('提交成功:', values); } }); }, }, created() { this.form = this.$form.createForm(this, { name: 'dynamic_form_item', }); }, }; </script>
Ant Design Vue 提供了主题样式,允许开发者自定义样式。以下是引入和使用主题样式的步骤:
import 'ant-design-vue/dist/antd.less';
// custom.less @import '~ant-design-vue/es/style/themes/index.less'; @primary-color: #1890ff;
import 'ant-design-vue/dist/antd.less'; import '@/styles/custom.less';
按钮组件提供了多种样式,包括主要按钮、次要按钮、危险按钮等。以下是基本使用示例:
<template> <a-button type="primary">主要按钮</a-button> <a-button type="secondary">次要按钮</a-button> <a-button type="danger">危险按钮</a-button> </template>
链接按钮用于文本链接,触发点击事件。以下是链接按钮的示例:
<template> <a-button type="link">链接按钮</a-button> </template>
按钮组用于组合多个按钮,提供一致的视觉效果。以下是按钮组的示例:
<template> <a-button-group> <a-button type="primary">上一页</a-button> <a-button type="primary">下一页</a-button> </a-button-group> </template>
输入框组件用于数据输入,支持多种输入类型。以下是基本使用示例:
<template> <a-input placeholder="请输入内容"></a-input> </template>
密码输入框用于输入密码,支持显示/隐藏密码。以下是密码输入框的示例:
<template> <a-input-password placeholder="请输入密码" /> </template>
数字输入框用于输入数字,支持上下箭头操作。以下是数字输入框的示例:
<template> <a-input-number placeholder="请输入数字" /> </template>
表格组件用于展示结构化数据,支持分页、排序等功能。以下是基本使用示例:
<template> <a-table :columns="columns" :data-source="data" :pagination="false"></a-table> </template> <script> export default { data() { return { columns: [ { title: '姓名', dataIndex: 'name' }, { title: '年龄', dataIndex: 'age' }, { title: '地址', dataIndex: 'address' }, ], data: [ { name: '张三', age: 25, address: '上海市' }, { name: '李四', age: 30, address: '北京市' }, ], }; }, }; </script>
表格组件支持分页功能,方便展示大量数据。以下是分页功能的示例:
<template> <a-table :columns="columns" :data-source="data" :pagination="pagination"></a-table> </template> <script> export default { data() { return { columns: [ { title: '姓名', dataIndex: 'name' }, { title: '年龄', dataIndex: 'age' }, { title: '地址', dataIndex: 'address' }, ], data: [ { name: '张三', age: 25, address: '上海市' }, { name: '李四', age: 30, address: '北京市' }, ], pagination: { pageSize: 10, total: 50, }, }; }, }; </script>
菜单组件用于导航栏和侧边栏等场景,支持多级菜单。以下是基本使用示例:
<template> <a-menu mode="horizontal"> <a-menu-item key="1"> <a href="#/home">首页</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">关于我们</a> </a-menu-item> </a-menu> </template>
垂直菜单用于侧边栏等场景,支持多级菜单。以下是垂直菜单的示例:
<template> <a-menu mode="vertical"> <a-sub-menu key="sub1"> <span slot="title"> <a-icon type="file" /> 菜单项1 </span> <a-menu-item key="1"> <a href="#/home">子菜单项1</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">子菜单项2</a> </a-menu-item> </a-sub-menu> </a-menu> </template>
布局组件用于页面布局,支持多栏布局。以下是布局组件的示例:
<template> <a-layout> <a-layout-header>头部</a-layout-header> <a-layout-content>内容区域</a-layout-content> <a-layout-footer>底部</a-layout-footer> </a-layout> </template>
带侧边栏的布局用于展示侧边栏和主要内容区域。以下是带侧边栏的布局示例:
<template> <a-layout> <a-layout-sider width="200px">侧边栏</a-layout-sider> <a-layout> <a-layout-header>头部</a-layout-header> <a-layout-content>内容区域</a-layout-content> <a-layout-footer>底部</a-layout-footer> </a-layout> </a-layout> </template>
页面导航设计用于导航栏和侧边栏等场景,支持多级菜单。以下是页面导航设计的示例:
<template> <a-layout> <a-layout-header> <a-menu mode="horizontal"> <a-menu-item key="1"> <a href="#/home">首页</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">关于我们</a> </a-menu-item> </a-menu> </a-layout-header> <a-layout-content> <a-layout-sider width="200px"> <a-menu mode="vertical"> <a-menu-item key="1"> <a href="#/home">菜单项1</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">菜单项2</a> </a-menu-item> </a-menu> </a-layout-sider> <a-layout> <a-layout-header>头部</a-layout-header> <a-layout-content>内容区域</a-layout-content> <a-layout-footer>底部</a-layout-footer> </a-layout> </a-layout-content> </a-layout> </template>
响应式布局用于适应不同设备的屏幕宽度,支持自动调整布局。以下是响应式布局的示例:
<template> <a-layout> <a-layout-header> <a-menu mode="horizontal" :style="{ padding: '16px' }"> <a-menu-item key="1"> <a href="#/home">首页</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">关于我们</a> </a-menu-item> </a-menu> </a-layout-header> <a-layout-content> <a-layout-sider v-model="collapsed" :trigger="null" collapsible :style="{ transition: 'width 0.2s', height: '100%', background: '#fff', overflow: 'hidden' }"> <a-menu mode="inline" :default-selected-keys="['1']" :default-open-keys="['sub1']"> <a-sub-menu key="sub1"> <span slot="title"> <a-icon type="file" /> 菜单项1 </span> <a-menu-item key="1"> <a href="#/home">子菜单项1</a> </a-menu-item> <a-menu-item key="2"> <a href="#/about">子菜单项2</a> </a-menu-item> </a-sub-menu> </a-menu> </a-layout-sider> <a-layout-content :style="{ padding: '24px', background: '#fff', height: '100%' }"> <a-layout-footer>底部</a-layout-footer> </a-layout-content> </a-layout-content> </a-layout> </template> <script> export default { data() { return { collapsed: false, }; }, }; </script>
动态表单生成用于根据数据动态生成表单,支持表单验证和提交。以下是动态表单生成的示例:
<template> <a-form :form="form" @submit="handleSubmit"> <a-form-item v-for="item in formItems" :key="item.key" :label="item.label"> <a-input v-decorator="item.decorator" /> </a-form-item> <a-form-item> <a-button type="primary" html-type="submit">提交</a-button> </a-form-item> </a-form> </template> <script> export default { data() { return { formItems: [ { key: 'name', label: '姓名', decorator: [ 'name', { rules: [{ required: true, message: '请输入姓名' }], }, ], }, { key: 'age', label: '年龄', decorator: [ 'age', { rules: [{ required: true, message: '请输入年龄' }], }, ], }, ], }; }, methods: { handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { console.log('提交成功:', values); } }); }, }, created() { this.form = this.$form.createForm(this, { name: 'dynamic_form_item', }); }, }; </script>
抽屉组件用于展示内容,支持水平和垂直方向。以下是抽屉组件的示例:
<template> <a-button type="primary" @click="showDrawer">打开抽屉</a-button> <a-drawer title="我是标题" :visible="visible" :on-close="onClose"> <p>Content...</p> </a-drawer> </template> <script> export default { data() { return { visible: false, }; }, methods: { showDrawer() { this.visible = true; }, onClose() { this.visible = false; }, }, }; </script>
模态框组件用于展示提示信息,支持自定义内容。以下是模态框组件的示例:
<template> <a-button type="primary" @click="openModal">打开模态框</a-button> <a-modal title="我是标题" :visible="visible" @ok="handleOk" @cancel="handleCancel"> <p>Content...</p> </a-modal> </template> <script> export default { data() { return { visible: false, }; }, methods: { openModal() { this.visible = true; }, handleOk(e) { this.visible = false; }, handleCancel(e) { this.visible = false; }, }, }; </script>
树形选择器用于选择树形结构的数据,支持展开和折叠子节点。以下是树形选择器的示例:
<template> <a-tree :tree-data="treeData" @click="onSelect" /> </template> <script> export default { data() { return { treeData: [ { title: '节点1', key: '1', children: [ { title: '节点1-1', key: '1-1' }, { title: '节点1-2', key: '1-2' }, ], }, { title: '节点2', key: '2', }, ], }; }, methods: { onSelect(e) { console.log('选择节点:', e.node.title); }, }, }; </script>