Element UI 入门指南 – wiki基地


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

前言

在当今前端开发领域,构建高效、美观且易于维护的用户界面是至关重要的。Vue.js 作为一款优秀的前端框架,以其简洁、灵活和高效的特性赢得了广大开发者的喜爱。而在 Vue.js 生态系统中,Element UI 无疑是构建企业级后台管理系统和复杂 Web 应用界面的首选 UI 组件库之一。

Element UI 由饿了么前端团队开源,提供了一套丰富、高质量的 Vue 2.x UI 组件。它遵循一致的设计规范,开箱即用,能够极大地提高开发效率,帮助开发者快速搭建功能完善、用户体验良好的界面。

如果你是一名 Vue.js 开发者,想要快速构建漂亮的后台界面,或者想提升现有项目的界面质量和开发效率,那么学习 Element UI 是一个非常值得的投入。本文将带你从零开始,一步步掌握 Element UI 的基本使用方法,为你打开 Element UI 的大门。

1. 什么是 Element UI?为什么选择它?

1.1 Element UI 简介

Element UI 是一套基于 Vue 2.x 的桌面端组件库。它提供了一系列预先设计好的、可复用的 UI 组件,包括按钮、表单、表格、弹窗、导航等等,几乎涵盖了构建一个完整应用所需的绝大多数常见界面元素。

Element UI 的设计理念注重一致性、易用性和灵活性。它的组件都经过精心设计和测试,具有良好的稳定性和兼容性。同时,Element UI 也提供了丰富的配置选项和开放的 API,允许开发者根据具体需求进行灵活的定制和扩展。

1.2 为什么选择 Element UI?

选择 Element UI 有以下几个主要原因:

  • 丰富的组件库: 提供了超过 50 个高质量的组件,覆盖了常见的界面需求,无需从零开始构建。
  • 一致的设计风格: 所有组件遵循统一的设计规范,使得整个应用的界面风格保持一致,提升用户体验。
  • 完善的文档: Element UI 拥有详尽、清晰的官方文档,包含每个组件的用法、属性、事件、插槽等信息,并提供了丰富的示例代码,极大地方便了学习和查阅。
  • 活跃的社区支持: 作为流行的开源项目,Element UI 拥有庞大的用户群体和活跃的社区,遇到问题时容易找到解决方案或获得帮助。
  • 易于上手: 基于 Vue.js 开发,与 Vue 的开发模式紧密结合,对于熟悉 Vue 的开发者来说非常容易上手。
  • 国际化支持: 内置国际化(i18n)支持,方便开发多语言应用。
  • 主题定制: 提供了灵活的主题定制方案,可以轻松调整组件的样式,以符合品牌或项目的特定需求。
  • 企业级应用友好: 设计和组件特性非常适合用于构建复杂的后台管理系统、企业级应用等。

虽然市面上还有其他优秀的 Vue UI 组件库(如 Ant Design of Vue, iView/View UI 等),但 Element UI 因其简洁优雅的设计和对中文环境的友好支持,在许多国内项目中占据主导地位。

需要注意的是,Element UI 是为 Vue 2.x 设计的。如果你在使用 Vue 3.x,推荐使用其升级版本 Element Plus。本文将聚焦于 Element UI (Vue 2.x)。

2. 入门准备:你需要知道什么?

在开始学习 Element UI 之前,你需要具备一些基础知识:

  • HTML, CSS, JavaScript 基础: 了解网页的基本结构、样式和交互原理。
  • Vue.js 基础: 这是必需的。你需要理解 Vue 的核心概念,包括:
    • Vue 实例的创建。
    • 模板语法(插值、指令如 v-bind, v-model, v-on, v-if, v-for)。
    • 组件的概念和使用(如何注册和使用组件)。
    • 单文件组件(SFC, .vue 文件)的结构(<template>, <script>, <style>)。
    • 组件间的通信(props, events)。
  • Node.js 和 npm/yarn: Element UI 通常通过 npm 或 yarn 进行安装和管理,并且在实际开发中会借助构建工具(如 Webpack 或 Vite)来处理单文件组件和依赖。确保你的开发环境中安装了 Node.js,并且可以使用 npm 或 yarn 命令。
  • 现代 JavaScript (ES6+): Element UI 的代码示例和文档中会使用到 ES6+ 的语法特性。

如果你对上述某些前置知识还不够熟悉,建议先花一些时间学习 Vue.js 的基础,再来学习 Element UI 会更加顺畅。

3. 安装和引入 Element UI

安装 Element UI 有两种主要方式:通过 npm/yarn 或通过 CDN。对于大多数使用构建工具(如 Vue CLI 或 Vite)的项目,推荐使用 npm/yarn 进行安装。

3.1 通过 npm 或 yarn 安装 (推荐)

这是在现代 Vue 项目中最常用的方式。首先,确保你的项目已经创建,并且已经安装了 Vue。

打开终端,进入你的项目根目录,然后运行以下命令安装 Element UI:

使用 npm:

bash
npm install element-ui --save

使用 yarn:

bash
yarn add element-ui

安装完成后,你需要将 Element UI 引入到你的 Vue 项目中。通常在项目的入口文件(如 src/main.jssrc/main.ts)中进行全局引入。

方式一:完整引入 (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’; // 引入样式文件

Vue.config.productionTip = false;

Vue.use(ElementUI); // 全局注册 Element UI

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

通过 Vue.use(ElementUI),Element UI 的所有组件都会被全局注册,你可以直接在任何 Vue 单文件组件的 <template> 中使用它们,例如 <el-button>, <el-input> 等。同时,它的默认主题样式 theme-chalk 也被引入。

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

这种方式只引入你实际使用到的组件,可以显著减小打包体积,对于大型项目是更推荐的方式。

按需引入通常需要借助 Babel 插件 babel-plugin-component

  1. 安装插件:

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

    或者

    yarn add babel-plugin-component -D
    “`

  2. 配置 Babel:

    修改 .babelrcbabel.config.js 文件。如果你使用的是 Vue CLI 3+,通常是修改 babel.config.js

    .babelrc 示例:

    json
    {
    "presets": [
    ["es2015", { "modules": false }]
    ],
    "plugins": [
    [
    "component",
    {
    "libraryName": "element-ui",
    "styleLibraryName": "theme-chalk"
    }
    ]
    ]
    }

    babel.config.js 示例:

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

    这个配置告诉 Babel 在编译时,如果遇到来自 element-ui 的组件引入,就将它们转换为按需加载的形式,并自动引入对应的样式文件(来自 theme-chalk)。

  3. main.js 中按需引入组件:

    src/main.js 中,你需要手动引入你想要使用的组件:

    “`javascript
    import Vue from ‘vue’;
    import App from ‘./App.vue’;
    // 按需引入 Button 和 Input 组件
    import { Button, Input } from ‘element-ui’;
    // 注意:样式文件不需要在这里手动引入,babel-plugin-component 会自动处理

    Vue.config.productionTip = false;

    // 注册组件
    Vue.use(Button);
    Vue.use(Input);
    // … 注册其他需要的组件

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

    这样,只有被明确引入和注册的组件才会被打包进最终的代码中。这种方式虽然配置稍显复杂,但在大型项目中能够有效减小文件体积,优化加载性能。

    注意: 一些特殊的组件,如 Message, MessageBox, Notification 等,它们是通过挂载到 Vue 原型上使用的,不需要显式地 Vue.use() 它们,但按需引入时仍然需要在 main.js 中引入并挂载到原型上。

    “`javascript
    import { Message, MessageBox, Notification } from ‘element-ui’;

    Vue.prototype.$message = Message;
    Vue.prototype.$msgbox = MessageBox;
    Vue.prototype.$alert = MessageBox.alert;
    Vue.prototype.$confirm = MessageBox.confirm;
    Vue.prototype.$prompt = MessageBox.prompt;
    Vue.prototype.$notify = Notification;
    ``
    在配置了
    babel-plugin-component后,实际上你只需要import { Message } from ‘element-ui’;然后Vue.prototype.$message = Message;` 插件就会自动处理它们的按需加载。

3.2 通过 CDN 引入

如果你只是想快速体验 Element UI,或者项目没有使用构建工具,可以通过 CDN 链接引入。

在 HTML 文件的 <head><body> 结束标签前添加以下代码:

“`html




“`

注意:CDN 引入的方式通常用于简单的页面或演示,它将所有 Element UI 代码一次性加载,并且不支持单文件组件 (.vue) 的方式使用 Element UI 组件,也不方便进行主题定制。在实际开发中,尤其是有构建工具的项目,推荐使用 npm/yarn 方式。

至此,你已经成功地将 Element UI 集成到你的 Vue 项目中。接下来,我们看看如何使用它的组件。

4. Element UI 组件的基本使用

成功引入 Element UI 后,你就可以在 Vue 单文件组件的 <template> 中像使用普通 HTML 标签一样使用 Element UI 提供的组件了。Element UI 的组件都以 el- 作为前缀,以区分原生的 HTML 标签。

我们以一个简单的按钮组件 el-button 为例。

假设你有一个名为 HelloWorld.vue 的组件:

“`vue

“`

关键点说明:

  • 组件标签: 使用 <el-button> 标签来表示一个 Element UI 按钮。
  • 内容: 组件标签中间的内容(如 默认按钮)会作为按钮的文本显示。这在 Element UI 中是通过 默认插槽 (Default Slot) 实现的。
  • 属性 (Props): 通过 HTML 属性的方式给组件传递数据或配置,例如 type="primary", disabled, size="small", icon="el-icon-edit"。这些属性对应着组件的 Props。Element UI 的文档会详细列出每个组件支持的所有 Props 及其类型、默认值和说明。在 Vue 中绑定动态属性时,需要使用 v-bind:: 缩写,例如 :type="dynamicType", :disabled="isDisabled"
  • 事件 (Events): 组件会触发特定的事件,可以通过 v-on:@ 缩写来监听。例如,监听按钮点击事件:<el-button @click="handleClick">点击我</el-button>。然后在 <script> 部分定义 handleClick 方法。Element UI 文档也会列出组件触发的事件。
  • 插槽 (Slots): 除了默认插槽,一些复杂的组件还提供命名插槽 (Named Slots),允许你向组件的特定位置插入内容。例如,el-dialog 组件有 title, footer 等命名插槽。
  • 样式: Element UI 组件自带样式。如果你需要调整样式,可以在 <style> 标签中编写 CSS。由于 Element UI 使用了 BEM (Block-Element-Modifier) 命名规范,并且组件样式可能使用了 scoped 或 Shadow DOM 等技术,直接覆盖默认样式可能需要更具体的选择器,或者使用 Vue 提供的深度作用选择器 /deep/>>> (在某些预处理器中可能是 ::v-deep)。不过更好的方式是通过主题定制来修改全局或部分组件的样式变量。

5. 探索 Element UI 的核心组件

Element UI 提供了大量的组件,覆盖了构建界面的方方面面。熟悉常用的核心组件能够让你更快地构建出功能完善的界面。以下是一些最常用的组件分类和示例:

5.1 布局 (Layout)

Element UI 提供了基于 24 栅格系统的布局组件 el-rowel-col,以及 el-container, el-header, el-aside, el-main, el-footer 等容器组件,帮助你轻松构建页面结构。

栅格布局示例:

vue
<template>
<el-row>
<el-col :span="12"><div>内容占据一半</div></el-col>
<el-col :span="12"><div>内容占据一半</div></el-col>
</el-row>
<el-row>
<el-col :span="8"><div>占据 8 份</div></el-col>
<el-col :span="8"><div>占据 8 份</div></el-col>
<el-col :span="8"><div>占据 8 份</div></el-col>
</el-row>
</template>

el-row 表示行,el-col 表示列。:span 属性指定列所占用的栅格数(总共 24 份)。可以通过 gutter 设置列之间的间隙,offset 设置偏移,以及响应式属性 sm, md, lg, xl 等。

容器布局示例:

vue
<template>
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-main>Main</el-main>
</el-container>
<el-footer>Footer</el-footer>
</el-container>
</template>

这些容器组件提供了常见的页面布局结构,可以方便地组合使用。

5.2 基础组件 (Basic)

  • Button 按钮 (el-button): 前面已经详细介绍过。
  • Icon 图标 (el-icon): 使用 Element UI 内置的图标。

    vue
    <template>
    <div>
    <i class="el-icon-edit"></i>
    <el-button type="primary" icon="el-icon-search">搜索</el-button>
    </div>
    </template>

    Element UI 的图标通过类名使用,el-icon- 后跟着图标名称。

5.3 表单组件 (Form)

表单是后台管理系统中最常见的元素。Element UI 提供了丰富的表单组件和表单容器 el-form

  • Input 输入框 (el-input):

    vue
    <template>
    <el-input v-model="username" placeholder="请输入用户名"></el-input>
    </template>
    <script>
    export default {
    data() {
    return {
    username: ''
    };
    }
    }
    </script>

    使用 v-model 进行双向数据绑定。支持 type, placeholder, clearable, prefix-icon, suffix-icon 等属性。

  • Select 选择器 (el-select, el-option):

    vue
    <template>
    <el-select v-model="city" placeholder="请选择城市">
    <el-option label="北京" value="beijing"></el-option>
    <el-option label="上海" value="shanghai"></el-option>
    <el-option label="广州" value="guangzhou"></el-option>
    </el-select>
    </template>
    <script>
    export default {
    data() {
    return {
    city: ''
    };
    }
    }
    </script>

    el-select 用于选择框,el-option 表示每个选项。同样使用 v-model 绑定选中值。支持多选、搜索等功能。

  • Radio 单选框 (el-radio, el-radio-group):

    vue
    <template>
    <el-radio-group v-model="gender">
    <el-radio label="male">男</el-radio>
    <el-radio label="female">女</el-radio>
    </el-radio-group>
    </template>
    <script>
    export default {
    data() {
    return {
    gender: 'male'
    };
    }
    }
    </script>

    el-radio-group 用于包裹一组单选框,通过 v-model 绑定选中项的值。el-radiolabel 属性是它的值。

  • Checkbox 复选框 (el-checkbox, el-checkbox-group):

    vue
    <template>
    <el-checkbox-group v-model="hobbies">
    <el-checkbox label="coding">编程</el-checkbox>
    <el-checkbox label="music">音乐</el-checkbox>
    <el-checkbox label="travel">旅行</el-checkbox>
    </el-checkbox-group>
    </template>
    <script>
    export default {
    data() {
    return {
    hobbies: ['coding'] // hobbies 绑定的是一个数组
    };
    }
    }
    </script>

    el-checkbox-group 绑定一个数组,每个被选中的 el-checkboxlabel 值会被添加到这个数组中。

  • Date & Time Picker 日期/时间选择器 (el-date-picker, el-time-picker):

    vue
    <template>
    <el-date-picker v-model="date" type="date" placeholder="选择日期"></el-date-picker>
    <el-time-picker v-model="time" placeholder="选择时间"></el-time-picker>
    </template>
    <script>
    export default {
    data() {
    return {
    date: null,
    time: null
    };
    }
    }
    </script>

    这些组件提供了方便的日期和时间选择界面,同样使用 v-model 绑定一个 Date 对象或时间字符串。type 属性可以配置选择器类型(date, week, month, year, dates, daterange, datetime, datetimerange, time, timerange)。

  • Form 表单 (el-form, el-form-item): 这是组织表单项并进行验证的核心组件。

    “`vue


    ``el-form绑定:model(表单数据对象) 和:rules(验证规则)。每个表单项放在el-form-item中,通过prop属性关联到model对象的对应字段。label设置标签文本。通过给el-form设置ref,可以在方法中调用它的validate()resetFields()方法进行表单验证和重置。Element UI 的表单验证基于async-validator` 库。

5.4 数据展示 (Data)

  • Table 表格 (el-table, el-table-column): 后台管理系统中最常用的组件之一,用于展示列表数据。

    “`vue


    ``el-table绑定:data属性(数据数组)。el-table-column定义列,prop关联数据对象的字段,label设置列头文本。通过作用域插槽 (slot-scope`),可以在列中自定义内容,常用于操作按钮列。表格组件功能强大,支持排序、过滤、多选、展开行等。

5.5 通知反馈 (Notice)

Element UI 提供了一系列用于给用户反馈的组件,通常通过 Vue 原型链上的方法调用。

  • Message 消息提示 (this.$message): 短暂显示的消息提示。

    javascript
    this.$message('这是一条提示消息');
    this.$message({
    message: '恭喜你,这是一条成功消息',
    type: 'success' // success, warning, info, error
    });

  • MessageBox 弹框 (this.$confirm, this.$alert, this.$prompt): 模态的弹框,用于确认、警告或输入。

    javascript
    this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
    }).then(() => {
    this.$message({
    type: 'success',
    message: '删除成功!'
    });
    }).catch(() => {
    this.$message({
    type: 'info',
    message: '已取消删除'
    });
    });

    $alert 用于展示信息,$prompt 用于获取用户输入。它们都返回 Promise 对象,方便处理用户的操作结果。

  • Notification 通知 (this.$notify): 从屏幕角落弹出的通知。

    javascript
    this.$notify({
    title: '标题',
    message: '这是一条不会自动关闭的消息'
    });
    this.$notify({
    title: '成功',
    message: '这是一条成功的提示消息',
    type: 'success'
    });

这些通知反馈组件因为是全局方法调用,所以在使用按需引入时需要在 main.js 中手动挂载到原型链上(如前面安装部分所示)。

5.6 其他常用组件

  • Dialog 对话框 (el-dialog): 模态的对话框。通过 visible.sync 属性控制显示/隐藏。

    vue
    <template>
    <el-button @click="dialogVisible = true">打开对话框</el-button>
    <el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
    <span>这是一段信息</span>
    <span slot="footer" class="dialog-footer">
    <el-button @click="dialogVisible = false">取 消</el-button>
    <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
    </span>
    </el-dialog>
    </template>
    <script>
    export default {
    data() {
    return {
    dialogVisible: false
    };
    }
    }
    </script>

    visible.sync 是 Vue 的一个语法糖,等同于 :visible="dialogVisible" @update:visible="val => dialogVisible = val",方便实现双向绑定。el-dialog 支持 title, footer 等命名插槽。

  • Pagination 分页 (el-pagination): 数据分页组件。

    vue
    <template>
    <el-pagination
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-sizes="[10, 20, 30, 40]"
    :page-size="pageSize"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total">
    </el-pagination>
    </template>
    <script>
    export default {
    data() {
    return {
    currentPage: 1,
    pageSize: 10,
    total: 100 // 假设总共有 100 条数据
    };
    },
    methods: {
    handleSizeChange(val) {
    this.pageSize = val;
    console.log(`每页 ${val} 条`);
    // 重新加载数据
    },
    handleCurrentChange(val) {
    this.currentPage = val;
    console.log(`当前页: ${val}`);
    // 重新加载数据
    }
    }
    }
    </script>

    通过绑定 current-page, page-size, total 来控制分页状态,监听 size-changecurrent-change 事件来处理分页逻辑。

  • Menu 菜单 (el-menu): 导航菜单组件。

  • Tabs 标签页 (el-tabs): 标签页切换组件。

Element UI 还有很多其他组件,例如 Tree (树形控件), Tag (标签), Card (卡片), Carousel (走马灯), Upload (上传) 等。在实际开发中,你可以根据需求查阅官方文档,找到合适的组件并学习其用法。

6. 主题定制 (Theme Customization)

Element UI 默认提供了一套名为 theme-chalk 的主题。如果你希望改变 Element UI 组件的颜色、字体、边框等样式,以符合你的品牌形象或设计规范,可以进行主题定制。

Element UI 的主题定制主要通过修改 SCSS 变量来实现。

6.1 方法一:通过 SCSS 变量覆盖 (推荐)

这是最灵活和强大的方式。

  1. 安装主题生成工具:

    bash
    npm install element-theme -g
    npm install element-theme-chalk -D

    element-theme 是一个全局工具,用于生成主题文件。element-theme-chalk 是 Element UI 的默认主题源码。

  2. 初始化变量文件:
    在项目根目录或一个专门存放主题文件的目录下执行:

    bash
    et -i custom-theme # custom-theme 是你自定义主题的文件夹名称

    这会在 custom-theme 文件夹中创建一个 element-variables.scss 文件。这个文件包含了 Element UI 默认主题的所有 SCSS 变量。

  3. 修改变量:
    打开 custom-theme/element-variables.scss 文件,修改你想要改变的变量值。例如,改变主色:

    “`scss
    / 改变主题色变量 /
    $–color-primary: teal; // 将默认的蓝色改为青色

    / 改变其他变量,例如按钮的圆角 /
    $–button-border-radius: 20px;

    / 或者引入其他自定义的 SCSS 文件 /
    // @import “your-custom-styles.scss”;
    “`

  4. 生成主题文件:
    custom-theme 文件夹所在的目录下执行:

    bash
    et -o src/assets/css/element-theme.css custom-theme/element-variables.scss

    这将读取 element-variables.scss 文件,结合 Element UI 的主题源码,生成编译后的 CSS 文件 element-theme.css 并输出到 src/assets/css/ 目录下。

  5. 引入生成的主题文件:
    src/main.js 中,用你生成的主题文件替换掉默认的样式文件引入:

    “`javascript
    import Vue from ‘vue’;
    import App from ‘./App.vue’;
    import ElementUI from ‘element-ui’;
    // import ‘element-ui/lib/theme-chalk/index.css’; // 注释掉或删除默认样式
    import ‘@/assets/css/element-theme.css’; // 引入你生成的主题样式

    Vue.config.productionTip = false;

    Vue.use(ElementUI);

    new Vue({
    render: h => h(App),
    }).$mount(‘#app’);
    ``
    如果你使用的是按需引入,并且配置了
    babel-plugin-component,插件会自动引入对应组件的样式。但全局变量的覆盖仍然需要手动引入生成的 CSS 文件。确保在main.js中引入你生成的主题文件,并且它要在Vue.use(ElementUI)或按需引入的代码 *之后* 引入,以保证你的变量覆盖生效。或者更常见的做法是让babel-plugin-component` 指向你的自定义主题路径:

    javascript
    // babel.config.js
    module.exports = {
    // ... 其他配置
    plugins: [
    [
    "component",
    {
    "libraryName": "element-ui",
    "styleLibraryName": "~your-theme-folder/lib", // 指向你的主题编译输出目录
    "ext": ".css" // 如果输出的是css文件
    }
    ]
    ]
    };

    这种方式要求你将编译后的主题文件放到一个特定的目录结构中。更简单直接的方式往往是引入生成的 element-theme.css 文件。

6.2 方法二:直接覆盖 CSS 样式

对于小范围的样式调整,或者你不想进行完整的变量覆盖,可以直接在你的 SCSS 或 CSS 文件中编写样式来覆盖 Element UI 的默认样式。

需要注意 Element UI 的样式使用了 BEM 命名规范和一定的选择器优先级。为了成功覆盖,你可能需要使用更具体的选择器,或者使用 !important (不推荐,但有时需要)。在 Vue 单文件组件中使用 scoped 样式时,可能需要使用深度作用选择器 /deep/>>> 来穿透到 Element UI 组件内部的样式。

“`vue

“`
这种方式适用于局部或简单的样式修改,但对于全局或大范围的主题调整则不够灵活和方便。

7. 国际化 (i18n)

Element UI 内置了国际化支持。如果你需要开发多语言应用,可以轻松切换 Element UI 组件的语言。

  1. 安装 i18n 库和 Element UI 语言包:

    “`bash
    npm install vue-i18n element-ui

    或者

    yarn add vue-i18n element-ui
    “`
    Element UI 已经包含了各种语言的翻译文件。

  2. 配置 Vue I18n:

    “`javascript
    // main.js
    import Vue from ‘vue’;
    import App from ‘./App.vue’;
    import ElementUI from ‘element-ui’;
    import ‘element-ui/lib/theme-chalk/index.css’;

    import VueI18n from ‘vue-i18n’;
    import locale from ‘element-ui/lib/locale’; // Element UI 的本地化模块
    import enLocale from ‘element-ui/lib/locale/lang/en’; // 英文语言包
    import zhLocale from ‘element-ui/lib/locale/lang/zh-CN’; // 中文语言包

    Vue.use(ElementUI);
    Vue.use(VueI18n);

    const messages = {
    en: {
    …enLocale // 将 Element UI 英文语言包合并到你的消息中
    // … 你自己的英文消息
    },
    zh: {
    …zhLocale, // 将 Element UI 中文语言包合并到你的消息中
    // … 你自己的中文消息
    }
    };

    const i18n = new VueI18n({
    locale: ‘zh’, // 设置默认语言为中文 ‘zh’ 或 英文 ‘en’
    messages
    });

    // 将 i18n 实例注入 Element UI 的本地化模块
    locale.use(i18n);

    Vue.config.productionTip = false;

    new Vue({
    i18n, // 将 i18n 实例注入 Vue 实例
    render: h => h(App),
    }).$mount(‘#app’);
    “`

通过将 Element UI 的语言包合并到你的 Vue I18n 消息中,并设置 i18n 实例的 locale 属性,Element UI 组件(如日期选择器、分页等)的界面文本就会自动切换到对应的语言。切换语言时,只需修改 i18n.locale 的值即可。

8. 进阶与最佳实践

  • 阅读官方文档: Element UI 的官方文档非常全面和易用,遇到任何问题或想了解组件的详细用法,查阅文档是最好的方式。
  • 按需引入: 对于生产环境的项目,强烈建议使用按需引入,以减小打包体积,优化性能。
  • 合理使用栅格系统: 利用 el-rowel-col 构建灵活的响应式布局。
  • 掌握表单验证: Element UI 的表单验证功能强大,熟悉 rules 的配置和 validate 方法的使用,可以快速构建健壮的表单。
  • 利用作用域插槽: 表格、列表等组件常使用作用域插槽来自定义单元格或项的渲染。
  • 了解组件的内部结构: 有时为了进行高级定制或解决特定的样式问题,了解组件渲染出的 HTML 结构会有帮助。可以通过浏览器开发者工具查看。
  • 考虑无障碍访问 (Accessibility): Element UI 在设计时考虑了一定的无障碍特性,但开发者在使用时也应注意为组件添加必要的 ARIA 属性或键盘交互支持,尤其是对于自定义的交互逻辑。
  • 版本管理: Element UI 有不同的版本,选择适合你项目 Vue 版本的 Element UI 版本(Vue 2 对应 Element UI,Vue 3 对应 Element Plus)。在项目开发过程中,固定 Element UI 的版本,避免不兼容的更新。
  • Element Plus (Vue 3): 如果你正在使用 Vue 3,请直接使用 Element Plus,它是 Element UI 的 Vue 3 版本,使用了 Composition API、TypeScript、Vite 等新技术,并支持 CSS Variables 进行主题定制,更加现代化。

9. 总结

Element UI 作为 Vue 2.x 生态中最流行的 UI 组件库之一,凭借其丰富的组件、一致的设计、完善的文档和活跃的社区,成为了许多企业级应用界面的首选。

通过本文的学习,你应该已经掌握了:

  • Element UI 的基本概念和优势。
  • 如何通过 npm/yarn 或 CDN 安装和引入 Element UI。
  • 完整引入和按需引入的区别及配置方法。
  • Element UI 组件的基本使用方式(属性、事件、插槽)。
  • 常用核心组件(布局、基础、表单、数据展示、通知反馈等)的简单用法。
  • Element UI 的主题定制方法(SCSS 变量覆盖和 CSS 覆盖)。
  • Element UI 的国际化配置。
  • 一些使用 Element UI 的进阶建议和最佳实践。

这只是 Element UI 入门的起点。Element UI 的强大之处在于其组件的丰富性和可配置性。要真正精通 Element UI,还需要结合官方文档,在实际项目中不断练习和探索。

希望这篇详细的入门指南能帮助你快速上手 Element UI,并利用它构建出更加高效、美观的 Vue.js 应用界面!开始你的 Element UI 之旅吧!


发表评论

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

滚动至顶部