Element UI 入门指南 – wiki基地


Element UI 入门指南:从零开始构建优雅高效的 Vue.js 应用界面

在现代 Web 开发中,前端框架 Vue.js 以其渐进式、易学易用和高性能的特点,赢得了广大开发者的青睐。然而,从零开始构建一个功能完善、界面美观的应用程序仍然是一项耗时耗力的任务,尤其是在处理 UI 组件的样式、交互和一致性方面。这时,一个优秀的 UI 组件库就显得尤为重要。Element UI 就是这样一款专为 Vue.js 开发者设计的、广受欢迎的桌面端 UI 组件库。

本指南将带你深入了解 Element UI,从基本概念、安装配置到核心组件的使用,一步步引导你掌握如何利用 Element UI 快速、高效地构建出专业级别的 Vue.js 应用界面。

一、 什么是 Element UI?

Element UI 是由饿了么前端团队开源的一套基于 Vue 2.x 的桌面端组件库。它提供了一整套设计规范统一、功能丰富、交互友好的 UI 组件,涵盖了布局、表单、数据展示、导航、反馈、通知等多个方面。

Element UI 的核心优势:

  1. 组件丰富: 提供了超过 50 个高质量的常用组件,能够满足绝大多数中后台管理系统、企业级应用的界面需求。
  2. 设计优雅: 遵循一致的设计语言(基于饿了么内部的 Axure Design System),界面简洁、直观、美观,注重细节和用户体验。
    3 易于使用:* API 设计友好,文档详尽清晰,示例丰富,上手门槛低,开发者可以快速集成和使用。
  3. 高度可定制: 支持主题定制,可以通过修改 SCSS 变量或使用在线主题生成器轻松改变组件的视觉风格,满足个性化需求。
  4. 国际化支持: 内置了多种语言包,方便开发面向全球用户的多语言应用。
  5. 社区活跃: 作为国内最流行的 Vue UI 库之一,拥有庞大的用户群体和活跃的社区,遇到问题时容易找到解决方案。

二、 为什么选择 Element UI?

在众多的 Vue UI 库(如 Vuetify, Ant Design Vue, iView/View UI 等)中,Element UI 脱颖而出,尤其在国内开发者社区中备受欢迎,主要原因有:

  • 专注桌面端: Element UI 主要面向 PC 端的后台管理系统、控制台等应用场景,其组件设计和交互逻辑更符合桌面用户的使用习惯。
  • 成熟稳定: 经过长时间的发展和大量项目的实践检验,Element UI 已经非常成熟和稳定。
  • 中文文档友好: 官方文档提供了非常完善的中文支持,对于国内开发者来说学习成本更低。
  • 与 Vue 生态紧密结合: 作为 Vue 生态系统的重要组成部分,与 Vue CLI、Vue Router、Vuex 等工具和库能够良好地协同工作。

当然,选择哪个 UI 库也取决于具体的项目需求和团队偏好。但如果你正在开发一个基于 Vue 2.x 的桌面端应用,Element UI 无疑是一个值得优先考虑的优秀选择。

三、 准备工作:环境与前提

在开始使用 Element UI 之前,请确保你已经具备以下基础:

  1. Node.js 环境: Element UI 的安装和项目构建依赖 Node.js 环境。请访问 Node.js 官网 下载并安装 LTS 版本。安装完成后,npm (Node Package Manager) 或 yarn 也会随之安装。你可以在终端(命令行)中运行 node -vnpm -v (或 yarn -v) 来检查是否安装成功。
  2. Vue CLI: 推荐使用 Vue CLI (Vue.js 官方提供的脚手架工具) 来创建和管理你的 Vue 项目。如果尚未安装,可以通过 npm 全局安装:
    bash
    npm install -g @vue/cli
    # 或者
    yarn global add @vue/cli

    安装后,运行 vue --version 检查。
  3. 基本的 Vue.js 知识: 你需要了解 Vue 的核心概念,如组件 (Components)、模板语法 (Template Syntax)、数据绑定 (Data Binding)、计算属性 (Computed Properties)、方法 (Methods)、生命周期钩子 (Lifecycle Hooks) 等。

四、 安装 Element UI

在一个已有的 Vue CLI 项目中安装 Element UI 非常简单。主要有两种方式:完整引入和按需引入。

项目创建 (如果还没有项目):

如果你还没有 Vue 项目,可以使用 Vue CLI 创建一个:

“`bash
vue create my-element-app

根据提示选择 Vue 2.x 版本和配置

cd my-element-app
“`

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

这是最简单的方式,适合快速上手或对最终打包体积要求不高的项目。

  1. 安装 Element UI:
    bash
    npm install element-ui -S
    # 或者
    yarn add element-ui

    -S--save 参数会将 Element UI 添加到项目的 dependencies 中。

  2. main.js 中引入并注册:
    打开项目根目录下的 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

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

    说明:
    * import ElementUI from 'element-ui'; 引入 Element UI 的 JavaScript 部分。
    * import 'element-ui/lib/theme-chalk/index.css'; 引入 Element UI 的核心 CSS 样式文件。theme-chalk 是 Element UI 的默认主题。
    * Vue.use(ElementUI); 这行代码是关键,它会全局注册 Element UI 提供的所有组件和指令。之后你就可以在项目的任何 .vue 文件中直接使用 Element UI 的组件了,例如 <el-button>, <el-input> 等。

优点: 配置简单,一步到位。
缺点: 会将 Element UI 的所有组件和样式打包进最终的应用文件,即使你只用了其中一小部分,也会导致打包体积较大。

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

对于生产环境的应用,为了优化性能和减小打包体积,推荐使用按需引入。这意味着只打包你实际使用到的组件及其样式。这需要借助 babel-plugin-component 插件。

  1. 安装 Element UI: (同上)
    bash
    npm install element-ui -S
    # 或者
    yarn add element-ui

  2. 安装 babel-plugin-component:
    bash
    npm install babel-plugin-component -D
    # 或者
    yarn add babel-plugin-component --dev

    -D--dev 表示将其安装为开发依赖 (devDependencies)。

  3. 配置 Babel:
    修改项目根目录下的 babel.config.js 文件 (或 .babelrc 文件),在 plugins 数组中添加配置:

    javascript
    // babel.config.js
    module.exports = {
    presets: [
    '@vue/cli-plugin-babel/preset'
    ],
    plugins: [
    [
    "component", // 使用 babel-plugin-component 插件
    {
    "libraryName": "element-ui", // 指定库名
    "styleLibraryName": "theme-chalk" // 指定样式库名 (主题文件夹)
    }
    ]
    ]
    };

  4. main.js 中按需引入:
    现在,你不需要完整引入 Element UI 了。你可以在 main.js (全局注册常用组件) 或具体的 .vue 文件 (局部注册) 中按需引入所需的组件。

    • main.js 中引入部分常用组件 (示例):

      “`javascript
      import Vue from ‘vue’;
      import App from ‘./App.vue’;
      // 按需引入 Element UI 组件
      import { Button, Select, Input, Form, FormItem, Message } from ‘element-ui’;
      // 注意:样式由 babel-plugin-component 自动处理,无需手动引入 CSS

      Vue.config.productionTip = false;

      // 全局注册这些常用组件
      Vue.use(Button);
      Vue.use(Select);
      Vue.use(Input);
      Vue.use(Form);
      Vue.use(FormItem);

      // 对于 $message 这类需要挂载到 Vue 原型上的方法,需要单独处理
      Vue.prototype.$message = Message;

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

    • .vue 文件中局部引入 (更推荐):
      这种方式更清晰地表明了组件的依赖关系。

      “`vue

      “`

优点: 大幅减小最终打包体积,提升应用加载速度,是生产环境的最佳实践。
缺点: 配置相对复杂一点,需要额外安装和配置 Babel 插件。

选择建议:
* 对于学习、原型开发或小型项目,完整引入 更快捷。
* 对于正式的、需要上线的项目,强烈推荐使用按需引入

五、 开始使用:核心概念与组件

安装并配置好 Element UI 后,就可以开始在你的 Vue 组件中使用它了。Element UI 的组件都以 el- 作为前缀,例如 <el-button>, <el-table>, <el-form> 等。

1. 布局 (Layout)

Element UI 提供了一套基于 24 栅格系统的布局组件 (<el-row><el-col>),用于快速构建页面的结构。

  • <el-row>: 代表一行,可以包含多个 <el-col>
    • gutter 属性:设置列之间的间隔。
  • <el-col>: 代表一列,放置具体内容。
    • span 属性:定义列所占的栅格数 (总共 24)。
    • offset 属性:定义列的左侧偏移栅格数。
    • 响应式属性:xs, sm, md, lg, xl,可以为不同屏幕尺寸设置不同的 spanoffset,实现响应式布局。

示例:

“`vue

“`

2. 容器 (Container)

Element UI 还提供了一套用于构建标准页面布局的容器组件,非常适合后台管理界面的搭建。

  • <el-container>: 外层容器。当子元素包含 <el-header><el-footer> 时,内部自动为 flex 布局,方向为 column (垂直)。
  • <el-header>: 顶栏容器。默认高度 60px。
  • <el-aside>: 侧边栏容器。默认宽度 300px。
  • <el-main>: 主要区域容器。会自动填充剩余空间。
  • <el-footer>: 底栏容器。默认高度 60px。

注意: <el-container> 的子元素只能是上述四个组件或另一个 <el-container>。直接包裹普通 div 可能导致布局异常。

示例 (典型的后台布局):

“`vue

“`

3. 常用组件示例

Element UI 提供了丰富的组件,这里仅列举几个最常用的进行简单介绍和示例。强烈建议查阅 Element UI 官方文档 获取每个组件的详细用法、Props、Events 和 Slots。

a) Button (按钮 el-button)

最基础的交互元素。

  • type: 设置按钮类型 (primary, success, warning, danger, info, text)。
  • size: 设置按钮尺寸 (medium, small, mini)。
  • icon: 设置按钮图标 (使用 el-icon- 前缀的类名)。
  • loading: 是否显示加载中状态。
  • disabled: 是否禁用。
  • @click: 点击事件。

“`vue

“`

b) Input (输入框 el-input)

用于接收用户输入。

  • v-model: 双向绑定输入值。
  • placeholder: 占位文本。
  • type: 输入框类型 (text, textarea, password 等)。
  • clearable: 是否显示清空按钮。
  • show-password: 是否显示切换密码可见性图标 (仅 type="password" 时有效)。
  • prefix-icon, suffix-icon: 添加前置/后置图标。
  • @input, @change, @blur, @focus: 相关事件。

“`vue

“`

c) Form (表单 el-form, el-form-item)

用于数据收集、校验和提交。

  • <el-form>: 表单容器。
    • model: 表单数据对象 (需要 :model 绑定)。
    • rules: 表单验证规则对象 (需要 :rules 绑定)。
    • label-width: 表单域标签的宽度。
    • ref: 设置引用名,用于后续调用表单方法 (如 validate, resetFields)。
  • <el-form-item>: 表单项,包裹具体的输入控件。
    • label: 标签文本。
    • prop: 对应 model 中的字段名,用于校验。

示例 (带校验的登录表单):

“`vue

“`

d) Table (表格 el-table, el-table-column)

用于展示结构化数据。

  • <el-table>: 表格容器。
    • data: 表格数据数组 (需要 :data 绑定)。
    • border: 是否带有纵向边框。
    • stripe: 是否为斑马纹表格。
    • height, max-height: 固定表头。
  • <el-table-column>: 定义表格的列。
    • prop: 对应 data 数组中对象的属性名。
    • label: 列头显示文本。
    • width: 列宽度。
    • fixed: 固定列 (left/right)。
    • formatter: 用来格式化内容。
    • 可以使用 Scoped Slot 自定义列模板。

示例:

“`vue

“`

e) Dialog (对话框 el-dialog)

模态对话框,用于承载信息或交互。

  • title: 对话框标题。
  • visible.sync: 控制对话框显示/隐藏 (.sync 修饰符是关键)。
  • width: 对话框宽度。
  • before-close: 关闭前的回调,会暂停关闭。

“`vue

“`

f) Message & Notification (消息提示 & 通知)

用于全局的、轻量级的反馈提示。它们不是组件标签,而是通过调用方法来触发。

  • Message (this.$messageMessage): 在页面顶部居中显示,自动消失,常用于操作成功的轻提示。
    • this.$message('这是一条消息提示');
    • this.$message.success('成功了');
    • this.$message.error('错了哦');
    • this.$message({ message: '警告哦', type: 'warning' });
  • Notification (this.$notifyNotification): 在页面右上角显示,内容更丰富,可手动关闭,常用于系统通知或较重要的提示。
    • this.$notify({ title: '标题名称', message: '这是一条通知消息' });
    • this.$notify.success({ title: '成功', message: '操作已成功完成', duration: 3000 });
    • this.$notify.error({ title: '错误', message: '发生了一个错误', offset: 100 });

注意: 要使用 this.$messagethis.$notify,必须确保在 main.js 中进行原型挂载 (完整引入时 Vue.use(ElementUI) 会自动完成;按需引入时需要手动添加,如 Vue.prototype.$message = Message; Vue.prototype.$notify = Notification;)。或者直接导入 import { Message, Notification } from 'element-ui'; 然后使用 Message.success(...) Notification(...) 的方式调用。

六、 国际化 (i18n)

如果你的应用需要支持多种语言,Element UI 提供了很好的国际化支持。

  1. 安装语言包: Element UI 默认是中文。如果你需要其他语言 (如英语),需要引入对应的语言包。
  2. 配置:
    • 完整引入时:
      “`javascript
      // main.js
      import Vue from ‘vue’;
      import ElementUI from ‘element-ui’;
      import locale from ‘element-ui/lib/locale/lang/en’; // 引入英文语言包

      Vue.use(ElementUI, { locale }); // 在 use 时传入 locale 配置
      * **按需引入时:**
      也需要在 `main.js` 中设置全局 locale。
      javascript
      // main.js
      import Vue from ‘vue’;
      import locale from ‘element-ui/lib/locale/lang/en’; // 引入语言包
      import ‘element-ui/lib/locale/index’; // 确保 locale mixin 被正确应用

      // …引入你需要的组件…

      Vue.locale(‘en’, locale); // 设置全局 locale
      // 或者 Vue.use(ElementLocale); Vue.locale(‘en’, ElementLocale.lang.en); // 另一种方式

      // …注册组件…
      “`

引入相应的语言包后,Element UI 组件内部的文本(如日期选择器的“今天”、分页器的“前往”等)就会显示为你设置的语言。

七、 主题定制

Element UI 允许你定制组件的视觉风格以匹配你的品牌或设计要求。

  1. 在线主题编辑器: Element UI 官网提供了一个在线主题预览和生成工具。你可以在线调整颜色、边框、圆角等变量,实时预览效果,并下载生成的主题包 (主要是 CSS 文件)。下载后,在 main.js 中引入你下载的 index.css 文件,替换掉默认的 element-ui/lib/theme-chalk/index.css 即可。
  2. 本地 SCSS 变量覆盖: 如果你的项目使用了 SCSS,可以更灵活地定制。
    • 安装 sasssass-loadernpm install sass sass-loader --save-dev
    • 创建一个 SCSS 变量文件 (例如 src/styles/element-variables.scss),在里面覆盖 Element UI 的默认变量
      “`scss
      / src/styles/element-variables.scss /

      / 改变主题色 /
      $–color-primary: #1e88e5; // 例如改成 Material Design Blue

      / 改变 icon 字体路径变量,必需 /
      $–font-path: ‘~element-ui/lib/theme-chalk/fonts’;

      @import “~element-ui/packages/theme-chalk/src/index”; // 引入 Element UI 源码样式
      * 在 `main.js` 中引入这个 SCSS 文件,代替原来的 CSS 文件:javascript
      // main.js
      // import ‘element-ui/lib/theme-chalk/index.css’; // 注释掉默认 CSS
      import ‘@/styles/element-variables.scss’; // 引入自定义的 SCSS 文件
      “`

八、 总结与后续学习

Element UI 是一个功能强大且易于上手的 Vue.js UI 组件库,它极大地提高了开发桌面端应用的效率和质量。通过本指南,你应该已经掌握了 Element UI 的基本概念、安装方法、核心布局与容器组件的使用,以及如何运用常见的表单、表格、对话框、提示等组件来构建交互界面。

关键点回顾:

  • 了解 Element UI 的优势和适用场景。
  • 掌握完整引入和按需引入两种安装配置方式,理解其优缺点。
  • 熟悉 el-row, el-col 进行栅格布局,el-container 系列组件构建页面骨架。
  • 能够熟练使用 Button, Input, Form, Table, Dialog, Message, Notification 等核心组件。
  • 了解如何进行国际化配置和主题定制。

下一步学习建议:

  1. 深入阅读官方文档: Element UI 的官方文档 是最权威、最全面的学习资源。务必花时间仔细阅读你感兴趣的组件文档,了解其所有 Props, Events, Methods 和 Slots。
  2. 实践项目: 理论结合实践是最好的学习方式。尝试使用 Element UI 构建一个简单的后台管理系统或工具应用,将学到的组件运用到实际场景中。
  3. 探索更多组件: 本指南只介绍了冰山一角。Element UI 还有很多优秀的组件,如 Menu (导航菜单), Tabs (标签页), Pagination (分页), DatePicker (日期选择器), Upload (文件上传), Tree (树形控件) 等,等待你去探索。
  4. 查看源码 (进阶): 如果你想深入理解组件的实现原理或进行更深层次的定制,可以尝试阅读 Element UI 的源码

Element UI 社区活跃,遇到问题时,除了查阅文档,也可以在 GitHub Issues 或相关技术论坛寻求帮助。

希望这篇详尽的入门指南能帮助你快速上手 Element UI,开启高效、愉快的 Vue.js 应用开发之旅!祝你编码顺利!


发表评论

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

滚动至顶部