Element UI 介绍与快速入门 – wiki基地


Element UI 深度解析与极速入门

在现代前端开发中,构建美观、功能丰富且用户体验一致的界面是一项核心任务。为了提高效率,避免从零开始构建每一个UI组件,前端框架的UI库应运而生。它们提供了一系列预先设计好的、可重用的组件,如按钮、表单、表格、对话框等,极大地加速了开发进程。

在 Vue.js 的生态系统中,众多优秀的UI库中,Element UI 无疑是其中一颗璀璨的明星。它以其精美的设计、丰富的组件、完善的文档和友好的API,赢得了广大开发者的喜爱,尤其在后台管理系统、企业级应用等领域拥有广泛的应用。

本文将带您深入了解 Element UI,从它的核心理念、强大特性,到如何快速将其集成到您的 Vue 项目中,并通过实例展示其基本用法。无论您是 Vue.js 的新手,还是希望提升开发效率的老兵,希望这篇文章都能为您提供有价值的参考。

一、什么是 Element UI?

Element UI 是一套基于 Vue 2.0 的桌面端组件库。由饿了么前端团队开发并维护,旨在为开发者提供一套开箱即用的、高质量的 UI 组件,帮助他们快速构建企业级应用和后台管理系统。

“桌面端”是 Element UI 的一个重要定位。这意味着它的设计风格和交互方式更偏向于传统的桌面应用程序,组件尺寸相对较大,适合在桌面浏览器上使用,而对于移动端应用,通常会选择 Element UI 的姊妹库——Mint UI(尽管 Mint UI 目前活跃度不如 Element UI)。

Element UI 的核心理念是:组件化、一致性、易用性

  • 组件化: 将复杂的UI元素拆解成独立、可复用的小模块,每个组件都有明确的职责和API,方便组合和管理。
  • 一致性: 提供统一的设计规范和视觉风格,确保整个应用界面的协调和美观,降低用户的认知负担。
  • 易用性: 提供清晰简洁的API、详尽的文档和丰富的示例,让开发者能够快速上手并高效开发。

经过多年的发展,Element UI 已经非常成熟,拥有庞大的用户群体和活跃的社区支持。虽然 Vue 3 已经发布,Element UI 团队也推出了适用于 Vue 3 的 Element Plus,但 Element UI (Vue 2) 仍然在许多存量项目和新项目中被广泛使用。了解 Element UI 对于 Vue 开发者来说,仍然具有重要的价值。

二、为什么选择 Element UI?

市面上有很多 Vue 的 UI 组件库,如 iView (View UI)、Ant Design Vue 等,Element UI 为什么能在其中脱颖而出,成为众多开发者的首选呢?这得益于它以下几个突出的优势:

  1. 丰富的组件库: Element UI 提供了涵盖绝大多数常见UI场景的组件。从基础的按钮、图标、布局,到复杂的表单元素、数据展示(表格、树形控件)、导航、弹窗、消息提示、数据可视化(虽然不是专门的数据可视化库,但提供了一些基础组件)等,应有尽有。这使得开发者无需引入其他第三方库,就能构建出功能完善的界面。

    • 基础组件: Button, Icon, Layout, Link, Text, Space
    • 表单组件: Radio, Checkbox, Input, InputNumber, Select, Cascader, Switch, Slider, TimePicker, DatePicker, DateTimePicker, Upload, Rate, ColorPicker, Transfer, Form, FormItem
    • 数据展示: Table, Tag, Progress, Tree, Pagination, Badge, Avatar, Skeleton
    • 通知组件: Alert, Loading, Message, MessageBox, Notification
    • 导航组件: Menu, Tabs, Breadcrumb, Dropdown, Steps
    • 其他组件: Dialog, Tooltip, Popconfirm, Popover, Carousel, Collapse, Timeline, Divider, Calendar, Backtop, Image, InfiniteScroll, Drawer

    这个列表只是部分常用组件,Element UI 的组件数量非常可观,能够满足企业级应用的复杂需求。

  2. 一致且精美的设计风格: Element UI 遵循一套清晰的设计规范,其组件在视觉上保持高度的一致性。这种统一的风格使得开发者构建的应用看起来更加专业和协调。同时,Element UI 的设计本身也十分美观,符合现代流行的设计趋势,无需进行大量的样式调整即可获得不错的视觉效果。

  3. 完善的国际化支持 (i18n): 对于需要支持多种语言的应用来说,国际化是一个 필수 (필수 – 必需的) 功能。Element UI 内置了对多种语言的支持,您可以轻松地切换组件库的语言,以适应不同国家或地区的用户。

  4. 考虑了无障碍访问 (Accessibility, A11y): Element UI 在设计和实现组件时,考虑了无障碍访问的需求,例如为组件添加了必要的ARIA属性,支持键盘导航等,帮助开发者构建对所有用户都更友好的应用。

  5. 详细且易懂的文档: Element UI 的官方文档是其一大亮点。文档结构清晰,组件的 API、属性、事件、插槽(slot)都有详尽的说明,并且提供了丰富的示例代码。开发者可以非常方便地查找组件的使用方法,解决开发中遇到的问题。

  6. 活跃的社区和持续的维护: Element UI 拥有庞大的用户群体和活跃的社区。在使用过程中遇到问题,很容易在社区中找到答案或者寻求帮助。同时,项目本身也在持续更新和维护,不断修复bug,增加新特性,保证了其生命力。

  7. 与 Vue.js 的完美结合: 作为为 Vue.js 量身打造的组件库,Element UI 充分利用了 Vue 的特性,如组件化、响应式数据绑定、虚拟 DOM、插槽等。它的API设计也与 Vue 的开发模式高度契合,使得开发者能够非常自然地在 Vue 项目中使用 Element UI。

总而言之,如果您正在使用 Vue.js 开发桌面端的后台管理系统、企业应用或者任何需要丰富UI组件的 Web 应用,Element UI 是一个非常优秀且值得信赖的选择。

三、快速入门:将 Element UI 集成到您的 Vue 项目

接下来,我们将通过一个简单的步骤指南,教您如何在现有的 Vue 项目中快速集成并开始使用 Element UI。

在开始之前,请确保您已经具备以下先决条件:

  • 您的开发环境中已安装 Node.js (推荐 LTI 版本)。
  • 您了解 Vue.js 的基本概念和项目结构。
  • 您有一个基于 Vue CLI 或 Vite 创建的 Vue 项目。

我们将主要介绍两种安装和引入方式:完整引入按需引入。完整引入简单直接,适合小型项目或学习阶段;按需引入则能有效减小最终打包体积,是大型项目和生产环境推荐的方式。

步骤 1: 安装 Element UI

打开您的项目终端,使用 npm、yarn 或 pnpm 安装 Element UI。

“`bash

使用 npm 安装

npm install element-ui –save

或者使用 yarn 安装

yarn add element-ui

或者使用 pnpm 安装

pnpm add element-ui
“`

--save 参数会将 Element UI 添加到项目的 dependencies 中,表示它是项目运行所必需的依赖。

步骤 2: 引入 Element UI

安装完成后,您需要在项目的入口文件(通常是 src/main.jssrc/main.ts)中引入 Element UI。

方式一:完整引入 (Full Import)

这是最简单的方式,将 Element UI 的所有组件和样式全部引入。

修改 src/main.js (或 src/main.ts):

“`javascript
// main.js
import Vue from ‘vue’;
import App from ‘./App.vue’;
import router from ‘./router’; // 如果有路由
import store from ‘./store’; // 如果有 Vuex

// 引入 Element UI
import ElementUI from ‘element-ui’;
import ‘element-ui/lib/theme-chalk/index.css’; // 引入 Element UI 的主题样式

Vue.config.productionTip = false;

// 将 Element UI 注册为 Vue 插件
Vue.use(ElementUI);

new Vue({
router, // 如果有路由
store, // 如果有 Vuex
render: h => h(App)
}).$mount(‘#app’);
“`

说明:

  • import ElementUI from 'element-ui'; 引入 Element UI 库本身。
  • import 'element-ui/lib/theme-chalk/index.css'; 引入 Element UI 的默认主题样式文件。如果您使用的是其他主题,需要引入对应的主题文件。
  • Vue.use(ElementUI); 这行代码将 Element UI 注册为 Vue 的插件。注册后,Element UI 提供的所有组件(如 el-button, el-input 等)和 Vue 实例上的方法(如 $message, $msgbox 等)都可以在项目中的任何地方直接使用了。

优点: 简单,无需额外配置。
缺点: 会引入所有组件的代码,即使你只使用了很少一部分,这会导致最终打包的JS文件体积较大,影响页面加载速度。

因此,完整引入通常只用于学习、演示或对打包体积要求不高的简单项目。对于生产环境的项目,强烈推荐使用按需引入。

方式二:按需引入 (On-Demand Import)

按需引入只引入您在项目中实际使用的组件,可以显著减小打包体积。这需要借助一些工具链的支持。

如果您使用 Vue CLI 3+ 或基于 Webpack 4+ 的构建工具:

您可以使用 babel-plugin-component 插件。首先安装它:

“`bash
npm install babel-plugin-component -D

或者 yarn add babel-plugin-component -D

或者 pnpm add babel-plugin-component -D

“`

-D--dev 表示将其作为开发依赖安装。

然后,修改您的 Babel 配置文件(通常是项目根目录下的 babel.config.js.babelrc):

javascript
// babel.config.js
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
],
// 添加 plugins 配置
plugins: [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}
]
]
}

说明:
这个配置告诉 Babel 在编译过程中,遇到 Element UI 的组件引入时,自动转换为按需引入的方式,并自动引入对应的样式文件。

配置完成后,您就可以在需要使用 Element UI 组件的 .vue 文件中直接引入和使用了。例如:

“`javascript
// 在一个 .vue 文件中

“`

如果您使用 Vite 或 Webpack 5+ 的现代构建工具:

推荐使用 unplugin-vue-componentsunplugin-auto-import 这两个插件,它们可以实现组件的自动按需引入和API的自动引入,无需手动在每个 .vue 文件中 import 组件。

首先安装插件:

“`bash
npm install unplugin-vue-components unplugin-auto-import -D

或者 yarn add unplugin-vue-components unplugin-auto-import -D

或者 pnpm add unplugin-vue-components unplugin-auto-import -D

“`

然后,修改您的 Vite 配置文件(通常是 vite.config.js):

“`javascript
// vite.config.js
import { defineConfig } from ‘vite’
import vue from ‘@vitejs/plugin-vue’
import AutoImport from ‘unplugin-auto-import/vite’
import Components from ‘unplugin-vue-components/vite’
import { ElementUiResolver } from ‘unplugin-vue-components/resolvers’

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
AutoImport({
// targets to transform
include: [
/.[tj]s?$/, // .ts, .js
/.vue$/, /.vue\?vue/, // .vue
],
imports: [
‘vue’,
// 可以添加其他常用的库,例如 vue-router, pinia/vuex 等
// {
// ‘vue-router’: [‘useRouter’, ‘useRoute’]
// }
],
// 为 Element UI 自动引入 API(如 $message, $alert 等)
resolvers: [
ElementUiResolver()
],
dts: ‘./auto-imports.d.ts’, // 生成自动引入的 TypeScript 声明文件
eslintrc: {
enabled: true, // 生成 ESLint 配置文件
filepath: ‘./.eslintrc-auto-import.json’, // ESLint 配置文件路径
}
}),
Components({
resolvers: [
// 自动引入 Element UI 组件
ElementUiResolver()
],
dts: ‘./components.d.ts’, // 生成组件的 TypeScript 声明文件
}),
]
})
“`

说明:
* unplugin-vue-components 会扫描您的模板,自动引入您使用的 Element UI 组件,并生成相应的 TypeScript 声明文件。
* unplugin-auto-import 会自动引入 Element UI 提供的一些全局方法(如 $message, $alert 等),并生成相应的 TypeScript 声明文件和 ESLint 配置。
* ElementUiResolver 是这两个插件针对 Element UI 提供的解析器。

配置完成后,您无需在 .vue 文件中手动 import { Button, Input } from 'element-ui'; 了,可以直接在模板和脚本中使用组件和全局方法:

“`javascript
// 在一个 .vue 文件中 (使用 Vite + unplugin)

``
注意:使用
unplugin-auto-import引入的全局方法默认是ElMessage等带有El` 前缀的名称,除非您在配置中进行别名设置。

手动按需引入(不推荐,了解即可):

如果您不想使用插件,也可以手动按需引入。但这非常繁琐,因为你需要手动引入每个组件及其对应的样式文件。

“`javascript
// src/main.js 或其他需要引入组件的文件
import Vue from ‘vue’;
import App from ‘./App.vue’;

// 手动引入需要的组件和样式
import { Button, Input } from ‘element-ui’;
import ‘element-ui/lib/theme-chalk/button.css’;
import ‘element-ui/lib/theme-chalk/input.css’;

Vue.config.productionTip = false;

// 注册组件
Vue.component(Button.name, Button);
Vue.component(Input.name, Input);
// 如果需要使用全局方法,也需要手动引入并挂载到 Vue.prototype
// import { Message } from ‘element-ui’;
// Vue.prototype.$message = Message;

new Vue({
render: h => h(App)
}).$mount(‘#app’);
“`
显然,这种方式管理起来非常复杂,不适合实际项目。因此,要么使用完整引入,要么使用按需引入插件。

步骤 3: 运行项目并查看效果

完成上述配置后,运行您的 Vue 项目:

“`bash
npm run serve

或者 yarn serve

或者 pnpm dev (如果是 Vite 项目)

“`

在浏览器中打开项目地址,您应该能看到 Element UI 的组件已经正常渲染并带有样式了。

四、Element UI 基本组件使用示例

一旦 Element UI 被成功引入项目,您就可以在任何 .vue 文件中像使用普通 Vue 组件一样使用它提供的组件了。Element UI 的组件都以 el- 作为前缀(例如 el-button, el-input, el-table)。

每个组件都有其特定的属性 (Props)、事件 (Events) 和插槽 (Slots),用于配置组件的行为、监听用户交互以及自定义组件的内部结构。这些都在 Element UI 的官方文档中有详细说明。

这里我们以几个常用组件为例,展示其基本用法:

1. 按钮 (Button)

按钮是应用中最基础的交互元素。Element UI 提供了多种类型的按钮。

“`html

“`

说明:

  • type: 设置按钮类型,如 primary, success, info, warning, danger,默认为空。
  • plain: 朴素按钮。
  • round: 圆角按钮。
  • circle: 圆形按钮,通常结合 icon 使用。
  • disabled: 禁用按钮。
  • loading: 显示加载状态。
  • size: 设置按钮尺寸,如 medium, small, mini,默认为空(默认尺寸)。
  • icon: 设置按钮图标,使用 Element UI 提供的图标类名,如 el-icon-search

2. 输入框 (Input)

输入框用于用户输入文本信息。

“`html

“`

说明:

  • v-model: 实现双向数据绑定,将输入框的值与组件的 data 中的属性关联起来。
  • placeholder: 输入框为空时显示的提示文本。
  • show-password: 在密码输入框右侧显示切换密码可见性的按钮。
  • type="textarea": 使输入框变为多行文本框。
  • rows: 设置多行文本框的行数。
  • prefix-icon, suffix-icon: 在输入框内部显示前缀或后缀图标。

3. 对话框 (Dialog)

对话框常用于弹出一些需要用户确认或填写的临时窗口。

“`html

“`

说明:

  • visible.sync: 控制对话框的显示与隐藏。使用 .sync 修饰符可以方便地在子组件内部修改父组件传递的 visible 属性。
  • title: 对话框的标题。
  • width: 对话框的宽度。
  • before-close: 对话框关闭前的回调函数,如果需要异步关闭或二次确认,可以在这里处理。
  • 默认插槽 (<template> ... </template> 标签内部):对话框的主体内容。
  • slot="footer" 的插槽:对话框底部的操作按钮区域。

示例中还使用了 Element UI 提供的全局方法 $confirm(来自 MessageBox 组件),用于弹出一个确认消息框。如果您使用完整引入,可以直接通过 this.$confirm 调用;如果按需引入,可能需要额外配置或手动引入 MessageBox 并挂载到 Vue.prototype。使用 unplugin-auto-import 可以自动解决这个问题。

4. 消息提示 (Message)

消息提示用于在页面顶部显示简短的提示信息,如操作成功、失败等。

“`html

“`

说明:

  • $message 是 Element UI 提供的一个全局方法,用于创建并显示消息提示。
  • 可以接收一个配置对象,包含 message (提示文本) 和 type (消息类型,如 success, warning, info, error)。
  • 也可以直接调用 this.$message.success(), this.$message.warning(), this.$message.info(), this.$message.error() 等快捷方法。

注意: $message$confirm 这类方法通常是挂载在 Vue 实例原型链上的。完整引入会自动完成这一步。按需引入时,如果使用 babel-plugin-component,需要手动或配置插件来挂载;如果使用 unplugin-auto-import,它会自动帮您处理(可能以 ElMessage 等名称)。

五、进阶与定制

快速入门只是 Element UI 的冰山一角。在实际项目中,您还会遇到更多需求,例如:

  • 主题定制: Element UI 提供了丰富的 SCSS 变量,您可以通过修改这些变量来定制组件的颜色、字体、间距等,甚至使用官方提供的主题定制工具来生成自定义主题包。
  • 组件属性与事件: 每个组件都有大量详细的属性和事件,通过查阅文档,您可以灵活地配置组件的行为,并响应用户的各种交互。
  • 插槽 (Slots): 利用插槽,您可以向组件内部注入自定义的内容,实现更灵活的布局和结构。
  • 表单验证: Element UI 的 el-form 组件提供了强大的表单验证功能,可以轻松实现复杂的验证规则。
  • 表格的复杂用法: el-table 是一个功能强大的表格组件,支持排序、筛选、树形结构、自定义列模板等多种高级功能。
  • 国际化: 根据项目的国际化需求,配置 Element UI 的语言包。

这些进阶功能都可以在 Element UI 的官方文档中找到详细的说明和示例。

六、总结

Element UI 是一套功能强大、设计精美、文档完善且易于使用的 Vue 2.0 桌面端 UI 组件库。它提供了丰富的开箱即用组件,能够帮助开发者快速构建高质量的企业级应用和后台管理系统。

本文详细介绍了 Element UI 是什么、为什么选择它,并提供了两种快速入门的集成方式(完整引入和按需引入)以及几个核心组件的基本使用示例。

无论是初学 Vue 希望快速构建界面的新手,还是追求开发效率和项目规范的资深开发者,Element UI 都是一个值得您投入时间学习和使用的优秀工具。

现在,您已经掌握了 Element UI 的基础知识和快速入门方法,接下来最重要的是动手实践。请访问 Element UI 的官方文档,深入了解更多组件和高级用法,并在您的项目中尝试使用它们。祝您使用 Element UI 构建出令人满意的应用!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部