Element UI:快速了解和上手 – wiki基地


Element UI:Vue.js 开发者的桌面级 UI 神器——快速了解与深度上手指南

在当今前端开发的浪潮中,构建美观、高效且用户体验良好的Web应用是每个开发者的追求。Vue.js 作为一款流行且易于上手的渐进式JavaScript框架,受到了广大开发者的喜爱。然而,从零开始构建一个功能完善的UI界面往往耗时耗力。这时,一套优秀的UI组件库就显得尤为重要。

Element UI,正是为 Vue.js 量身打造的一款桌面端UI组件库,以其优雅的设计、丰富的组件和友好的API,迅速成为了Vue生态中最受欢迎的UI库之一。无论您是Vue新手还是经验丰富的开发者,Element UI都能极大地提升您的开发效率,让您更专注于业务逻辑的实现。

本文将带您深入了解 Element UI,从它是为何物,到它的核心特性,再到如何快速安装、引入和使用其丰富的组件。我们将通过详细的讲解和代码示例,助您轻松踏上 Element UI 的开发之旅。

第一章:初识 Element UI – 它是谁?为何选择它?

1.1 什么是 Element UI?

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

Element UI 的设计哲学注重简洁、一致和易用性。它提供了一系列常用的 UI 元素,如按钮、表单、表格、导航、弹窗等,这些组件都经过精心设计和优化,具有良好的视觉效果和交互体验。

虽然 Element UI 最初是为桌面端设计,但其组件也具有一定的响应式能力,可以在不同尺寸的屏幕上表现良好(尽管在移动端可能有更优的选择,如 Vant)。

1.2 为何选择 Element UI?

在众多的 Vue UI 组件库中(如 Ant Design Vue, iView, Vant等),Element UI 凭借其独特的优势脱颖而出:

  1. 优雅且一致的设计风格: Element UI 遵循一套统一的设计规范,所有组件都具有相似的视觉风格和交互模式,使得构建的应用程序界面整体感强、美观大方。其设计语言简洁而专业,非常适合企业级应用。
  2. 丰富的组件库: Element UI 提供了涵盖了绝大多数常见UI场景的组件,从基础的按钮、输入框,到复杂的表格、树形控件、数据选择器、上传组件、图表组件等,应有尽有。这意味着您无需从零开始构建这些复杂的交互元素。
  3. 友好的 API 和完善的文档: Element UI 的组件 API 设计直观易懂,参数命名规范。更重要的是,它提供了高质量、详细且带有示例的官方文档,无论新手还是老手,都能快速查阅和理解组件的使用方法。这极大地降低了学习成本。
  4. 强大的定制能力: Element UI 支持主题定制,允许开发者通过修改 SCSS 变量或使用官方提供的主题生成工具,轻松调整组件的样式以符合项目的品牌或设计要求。
  5. 良好的社区支持和活跃度: 作为一个广受欢迎的开源项目,Element UI 拥有庞大的用户群体和活跃的社区。这意味着当您遇到问题时,很容易找到解决方案或获得帮助。项目本身也在持续更新和维护中。
  6. 国际化支持: Element UI 内置了多种语言支持,方便开发者构建面向全球用户的应用程序。
  7. 聚焦桌面端体验: 相比于一些同时兼顾PC和Mobile的库,Element UI更专注于提供卓越的桌面端交互体验,其组件在PC上的表现通常更加稳定和成熟。

基于以上优点,Element UI 成为了许多开发者构建后台管理系统、CRM系统、数据可视化平台等桌面端应用的***。

第二章:环境准备与快速上手

在开始使用 Element UI 之前,您需要确保您的开发环境中已经具备以下条件:

  1. Node.js: Element UI 是基于 Node.js 生态系统的,您需要安装 Node.js(推荐 LTS 版本),它包含了 npm 包管理器。您也可以使用 yarn 或 pnpm 作为替代。
  2. Vue.js 项目: 您需要一个基于 Vue.js 的项目。通常,您可以使用 Vue CLI(Vue Command Line Interface)来快速创建一个 Vue 项目。如果您还没有安装 Vue CLI,可以通过 npm 或 yarn 全局安装:
    bash
    npm install -g @vue/cli
    # 或者
    yarn global add @vue/cli

    然后使用 Vue CLI 创建一个新项目:
    bash
    vue create my-element-project

    进入项目目录:
    bash
    cd my-element-project

环境准备就绪后,我们就可以将 Element UI 添加到项目中了。

2.1 安装 Element UI

使用 npm 或 yarn 在您的 Vue 项目中安装 Element UI:

“`bash

使用 npm

npm install element-ui –save

或者使用 yarn

yarn add element-ui
“`

--save 标志会将 Element UI 添加到项目的 dependencies 中,确保项目部署时也会包含它。

2.2 引入 Element UI

安装完成后,您需要在 Vue 项目的入口文件中引入 Element UI。通常,这个文件是 src/main.jssrc/main.ts。Element UI 提供了两种主要的引入方式:

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

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

src/main.js 中添加以下代码:

“`javascript
import Vue from ‘vue’;
import App from ‘./App.vue’;
import ElementUI from ‘element-ui’; // 引入 Element UI
import ‘element-ui/lib/theme-chalk/index.css’; // 引入 Element UI 的样式文件

Vue.config.productionTip = false;

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

new Vue({
render: h => h(App),
}).$mount(‘#app’);
“`

  • import 'element-ui/lib/theme-chalk/index.css'; 引入的是 Element UI 的默认主题样式(Chalk)。
  • Vue.use(ElementUI); 注册了 Element UI。注册后,您就可以在任何组件中使用 Element UI 提供的全局组件(如 el-button, el-input 等)和一些挂载到 Vue 实例原型上的方法(如 $message, $notify 等)。

优点: 简单快捷,一步到位。
缺点: 会将所有 Element UI 组件的代码都打包到您的最终文件中,即使您只使用了其中一小部分。这可能导致最终文件体积较大,影响页面加载速度。对于大型项目或对性能有较高要求的项目,不推荐使用完整引入。

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

按需引入只打包您实际使用的组件,可以显著减小项目体积。这种方式需要借助 Babel 插件 babel-plugin-component

首先,安装 babel-plugin-component:

“`bash

使用 npm

npm install babel-plugin-component –save-dev

或者使用 yarn

yarn add babel-plugin-component –dev
“`

--save-dev 标志将其添加到开发依赖 devDependencies 中。

然后,配置 Babel。根据您的 Vue CLI 版本和项目配置,您可能需要在 .babelrcbabel.config.js 文件中进行配置。

  • 如果使用 .babelrc: 在项目根目录创建或修改 .babelrc 文件,添加 plugins 配置:
    json
    {
    "presets": [
    ["@vue/app", { /* ... 其他配置 ... */ }]
    ],
    "plugins": [
    [
    "component",
    {
    "libraryName": "element-ui",
    "styleLibraryName": "theme-chalk"
    }
    ]
    ]
    }

  • 如果使用 babel.config.js (Vue CLI 3+ 默认): 在项目根目录修改 babel.config.js 文件,添加 plugins 配置:
    javascript
    module.exports = {
    presets: [
    '@vue/cli-plugin-babel/preset'
    ],
    plugins: [
    [
    "component",
    {
    "libraryName": "element-ui",
    "styleLibraryName": "theme-chalk"
    }
    ]
    ]
    }

配置好 Babel 插件后,在 src/main.js 中按需引入组件:

“`javascript
import Vue from ‘vue’;
import App from ‘./App.vue’;

// 按需引入 Element UI 组件和样式
// 引入你需要的组件
import {
Button,
Select,
Option,
Input,
Table,
TableColumn,
Pagination,
Dialog,
Message,
Notification,
Loading
// … 更多你需要的组件
} from ‘element-ui’;

// 按需引入样式
// Babel插件会自动引入对应组件的样式,这里通常无需手动引入组件样式文件
// 如果需要引入基础样式或通用样式,可以考虑引入一些通用的CSS文件
// import ‘element-ui/lib/theme-chalk/base.css’; // 例如,引入基础样式

Vue.config.productionTip = false;

// 注册组件
Vue.use(Button);
Vue.use(Select);
Vue.use(Option);
Vue.use(Input);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(Pagination);
Vue.use(Dialog);

// 注册服务
// Message, Notification, Loading 需要单独注册或挂载到 Vue 实例上
Vue.prototype.$message = Message;
Vue.prototype.$notify = Notification;
Vue.prototype.$loading = Loading.service; // Loading 通常以服务形式调用

new Vue({
render: h => h(App),
}).$mount(‘#app’);
“`

优点: 只打包使用的组件,大幅减小项目体积,优化加载性能。
缺点: 配置稍微复杂一些,并且每次使用新组件都需要在 main.js 中手动引入和注册(或者通过其他自动化方式)。对于一些服务类的组件(如 Message, Notification),需要手动挂载到 Vue 原型上。

推荐方式: 对于新项目或对性能有要求的项目,强烈推荐使用按需引入。虽然初始配置稍多,但长期来看收益更大。对于小型demo或学习项目,完整引入会更方便。

第三章:Element UI 组件基础用法

无论您采用哪种引入方式,一旦 Element UI 被成功引入并注册,您就可以在 Vue 组件的模板 (<template>) 中直接使用它的组件了。

Element UI 组件通常以 el- 为前缀命名,例如 el-buttonel-inputel-table 等。

3.1 使用基础组件 – el-button

el-button 是最常用的组件之一,用于创建各种按钮。

“`vue

“`

解析:

  • el-button 标签用于创建一个按钮组件。
  • type 属性用于设置按钮的类型(样式),可选值有 primary, success, warning, danger, info, text
  • icon 属性可以设置按钮前面的图标,Element UI 内置了一套图标库,图标名称以 el-icon- 开头。
  • :disabled="true" 使用 Vue 的 v-bind 语法将 disabled 属性绑定到一个布尔值,控制按钮是否禁用。
  • circle 属性使按钮变成圆形。
  • 您可以使用 @click 监听按钮的点击事件,并执行相应的方法。

3.2 使用输入框 – el-input

el-input 用于创建文本输入框。

“`vue

“`

解析:

  • el-input 标签用于创建输入框。
  • v-model 用于实现数据的双向绑定,将输入框的值与组件的 username 数据属性同步。
  • placeholder 属性设置输入框的占位符文本。
  • show-password 属性在密码输入框中显示切换明文/密文的眼睛图标。
  • clearable 属性显示清除按钮。
  • slot="prefix"slot="append" 是 Element UI 组件中常用的插槽 (Slots) 概念。prefix 插槽用于在输入框内容前面添加内容(如图标),append 插槽用于在输入框内容后面添加内容(如文字或按钮)。插槽是 Vue 组件中非常重要的概念,用于内容分发。

3.3 组件属性、事件和插槽

从上面的例子可以看出,Element UI 组件的使用模式遵循 Vue 的标准组件使用方式:

  • 属性 (Props): 通过 HTML 属性的方式向子组件传递数据。例如 <el-button type="primary">,这里的 type 就是 el-button 组件的一个 prop。可以使用 v-bind:: 缩写来动态绑定数据,例如 :disabled="isButtonDisabled"
  • 事件 (Events): 通过 v-on:@ 缩写监听组件内部触发的事件。例如 <el-button @click="handleClick"> 监听 click 事件。
  • 插槽 (Slots): 用于向组件中插入自定义内容。Element UI 的许多组件都提供了具名插槽 (Named Slots) 来指定内容插入的位置,例如 el-inputprefixappend 插槽,或者 el-dialogtitlefooter 插槽,以及默认插槽 (Default Slot) 用于插入主要内容。

掌握了属性、事件和插槽的使用,您就可以灵活地配置和控制 Element UI 的各种组件了。查阅官方文档是了解每个组件支持哪些属性、事件和插槽的最佳途径。

第四章:Element UI 核心布局与常用组件详解

为了构建更复杂的界面,您需要了解 Element UI 提供的布局系统和更高级的组件。

4.1 布局容器 (Layout)

Element UI 提供了一套基于 Flexbox 的 24 栅格布局系统,与 Bootstrap 等类似,用于快速构建页面布局。

  • el-row: 行容器,用于包含列。
  • el-col: 列容器,必须放在 el-row 中。通过设置 span 属性指定列在行中所占的栅格数(总共 24 栅格)。

“`vue

“`

解析:

  • :span="n" 指定列占据的栅格数。
  • :gutter="n"el-row 上设置列之间的间隔(单位:px)。
  • : 前缀的属性 (:xs, :sm, :md, :lg, :xl) 用于实现响应式布局,它们分别对应不同的屏幕断点(extra small, small, medium, large, extra large)。您可以为每个断点设置列占据的栅格数,以适应不同设备尺寸。

4.2 表单组件 (Forms)

表单是后台管理系统中最重要的部分之一。Element UI 提供了丰富的表单组件,并集成了表单校验功能。

核心组件:

  • el-form: 表单容器。
  • el-form-item: 表单项容器,用于包裹单个表单组件(如输入框、选择器等),并提供标签、校验等功能。
  • el-input, el-select, el-radio, el-checkbox, el-date-picker, el-upload 等:各种具体的表单输入控件。

表单校验示例:

“`vue

“`

解析:

  • el-form 绑定 :model="ruleForm" (表单数据对象) 和 :rules="rules" (校验规则对象)。
  • ref="ruleForm" 为表单设置一个引用,方便在 JavaScript 中通过 this.$refs.ruleForm 访问表单实例,从而调用其方法(如 validateresetFields)。
  • el-form-itemprop 属性对应 model 对象中的字段名,这是触发表单项校验的关键。label 属性设置表单项的标签文本。
  • rules 对象定义了每个字段的校验规则,可以包含多种校验器(required, min, max, type, pattern 等)以及触发校验的时机(trigger: blurchange)。
  • submitForm 方法中使用 this.$refs[formName].validate 方法触发表单的整体校验。它是一个异步方法,接收一个回调函数,回调函数的参数 valid 表示校验结果(布尔值)。
  • resetForm 方法使用 this.$refs[formName].resetFields() 重置表单字段的值并移除校验结果。

Element UI 的表单组件和校验系统功能强大且灵活,是构建复杂数据输入界面的利器。

4.3 数据展示 – 表格 (Table)

表格是后台系统中展示和管理数据最常见的组件。Element UI 的 el-table 组件功能非常丰富。

“`vue

“`

解析:

  • el-table:data 属性绑定需要展示的数据数组。
  • style="width: 100%" 控制表格宽度。
  • stripe 属性开启斑马纹样式,增加可读性。
  • border 属性为表格增加边框。
  • max-height 属性设置表格的最大高度,超出高度会出现滚动条。
  • el-table-column 定义表格的列。
    • prop 属性指定对应数据数组中对象的哪个字段。
    • label 属性指定列的表头文本。
    • width 属性设置列的宽度。
  • 最后一列使用了 template 标签和 slot-scope 来自定义列的内容。slot-scope (在 Vue 3 中改名为 v-slot) 可以访问当前行的数据和索引。
    • scope.$index 是当前行的索引。
    • scope.row 是当前行的数据对象。
    • template 中使用了 el-button 来创建操作按钮,并绑定了点击事件,将当前行的索引和数据传递给方法。

el-table 还支持排序、过滤、单选/多选、树形结构、嵌套数据等高级功能,可以查阅文档深入了解。

4.4 消息提示与弹窗 (Feedback)

Element UI 提供了多种反馈用户操作或展示重要信息的方式。

  • el-dialog: 模态对话框。
  • $message: 全局消息提示 (Toast)。
  • $notification: 全局通知 (Notification)。
  • $loading: 全局加载提示。

示例:

“`vue

“`

解析:

  • el-dialog 使用 :visible.sync 来控制显示/隐藏。.sync 修饰符是 Vue 提供的语法糖,相当于 :visible="dialogVisible" 加上 @update:visible="val => dialogVisible = val"
  • title 设置对话框标题。
  • width 设置对话框宽度。
  • before-close 钩子函数可以在关闭前执行一些逻辑(如确认提示),需要调用传入的 done() 方法才会真正关闭对话框。
  • 使用 slot="footer" 自定义对话框底部的按钮区域。
  • $message$notification 通常通过挂载到 Vue 原型上的方法调用。它们接受一个配置对象,可以设置消息内容、类型、持续时间等。
  • $loading 也可以通过服务方式调用 this.$loading({ options }) 来显示全屏或局部加载,返回一个加载实例,需要调用 instance.close() 方法来关闭加载提示。

这些反馈组件是提升用户体验、及时告知用户操作结果的重要部分。

第五章:深入与拓展

Element UI 的功能远不止以上介绍的这些。为了更好地使用它,您可以进一步学习:

  • 更多组件: 探索文档中的其他组件,如 Tree (树形控件), Pagination (分页), Calendar (日历), Carousel (走马灯), Upload (上传) 等。
  • 主题定制: 了解如何通过修改 SCSS 变量或使用官方主题生成工具来定制 Element UI 的主题,使其与您的项目风格一致。
  • 国际化 (i18n): 如果您的应用需要支持多种语言,Element UI 提供了国际化支持的方案。
  • 自定义组件: 学习如何结合 Element UI 的基础组件和样式,构建符合特定业务需求的自定义复合组件。
  • 与 Vue Router/Vuex 集成: 在实际应用中,Element UI 组件常常需要与路由和状态管理库配合使用。例如,在表格中使用路由链接,或者在表单提交后更新 Vuex 中的状态。
  • 无障碍设计 (Accessibility): Element UI 在设计时考虑了无障碍性,遵循 WAI-ARIA 标准,但作为开发者,您也需要注意在实际使用中遵循最佳实践。
  • 在 Vue 3 中使用 Element UI: Element UI 的主要版本是针对 Vue 2 的。如果您在使用 Vue 3,可以选择 Element Plus,它是 Element UI 的 Vue 3 版本,API 类似但针对 Vue 3 的特性进行了优化。

第六章:总结与展望

Element UI 作为一款成熟、稳定、功能丰富的 Vue 2 桌面端 UI 组件库,极大地简化了前端开发工作。通过本文的介绍,您应该对 Element UI 有了初步的了解,并掌握了安装、引入以及使用其基础和常用组件的方法。

从优雅的设计到完善的文档,从丰富的组件到灵活的定制能力,Element UI 提供了一套完整的解决方案,帮助开发者快速构建高质量的 Web 应用。

前端技术发展迅速,Element UI 也在不断进步,Element Plus 的推出更是表明了其向 Vue 3 迁移的决心。无论您选择 Element UI 还是 Element Plus,掌握这款强大的 UI 工具都将是您 Vue 开发生涯中的一笔宝贵财富。

下一步:

  1. 尝试在您的 Vue 项目中安装并引入 Element UI(推荐按需引入方式)。
  2. 参考官方文档,尝试使用更多不同的组件(如 Table 的高级功能、Form 的复杂校验、Pagination 的使用等)。
  3. 练习使用栅格布局构建不同的页面结构。
  4. 探索 Element UI 的主题定制功能,尝试修改一些基础样式。
  5. 查阅 Element UI 的 GitHub 仓库,了解项目的最新动态和社区讨论。

祝您在 Element UI 的世界里开发愉快,创造出令人惊艳的Web应用!


发表评论

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

滚动至顶部