Element UI 完整使用实战示例

以下是 Element UI 的完整使用实战示例,涵盖从环境搭建、基础组件使用到项目实战的全流程,结合多个实际场景和代码示例:


一、环境搭建与基础配置

1. 安装 Element UI

通过 npmyarn 安装:

npm install element-ui --save
# 或 yarn add element-ui
2. 全局引入与配置

main.js 中全局注册 Element UI:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';Vue.use(ElementUI);
3. 按需引入(优化性能)

安装 babel-plugin-component 插件:

npm install babel-plugin-component --save-dev

babel.config.js 中配置:

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

main.js 中按需引入组件:

import { Button, Select, Message } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';Vue.use(Button);
Vue.use(Select);
Vue.prototype.$message = Message; // 全局挂载消息组件

二、基础组件使用

1. 按钮与输入框
<template><div><el-button type="primary" @click="handleClick">点击我</el-button><el-input v-model="inputValue" placeholder="请输入内容"></el-input></div>
</template><script>
export default {data() {return {inputValue: ''};},methods: {handleClick() {this.$message.success('按钮被点击!');}}
};
</script>
2. 表单与验证
<template><el-form :model="form" :rules="rules" ref="form" label-width="100px"><el-form-item label="用户名" prop="username"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密码" prop="password"><el-input type="password" v-model="form.password"></el-input></el-form-item><el-button type="primary" @click="submitForm">提交</el-button></el-form>
</template><script>
export default {data() {return {form: {username: '',password: ''},rules: {username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],password: [{ required: true, message: '请输入密码', trigger: 'blur' }]}};},methods: {submitForm() {this.$refs.form.validate((valid) => {if (valid) {this.$message.success('提交成功!');} else {this.$message.error('请完善表单');}});}}
};
</script>

三、布局与容器组件

1. 响应式网格布局
<template><el-row><el-col :span="8" style="background-color: #f2f2f2;">侧边栏</el-col><el-col :span="16"><el-header>Header</el-header><el-main>Main Content</el-main></el-col></el-row>
</template>
2. 菜单与导航
<template><el-menu mode="vertical" :router="true" default-active="/"><el-menu-item index="/">首页</el-menu-item><el-submenu index="2"><template slot="title">用户管理</template><el-menu-item index="/user/list">用户列表</el-menu-item><el-menu-item index="/user/add">添加用户</el-menu-item></el-submenu></el-menu>
</template>

四、高级组件与功能

1. 对话框(Dialog)
<template><el-button @click="dialogVisible = true">打开对话框</el-button><el-dialog :visible.sync="dialogVisible" title="提示"><p>这是一个对话框</p><span slot="footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="confirm">确认</el-button></span></el-dialog>
</template><script>
export default {data() {return {dialogVisible: false};},methods: {confirm() {this.$message({ message: '操作成功', type: 'success' });this.dialogVisible = false;}}
};
</script>
2. 表格(Table)与数据操作
<template><el-table :data="tableData" style="width: 100%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button size="mini" @click="handleEdit(scope.row)">编辑</el-button><el-button type="danger" size="mini" @click="handleDelete(scope.row)">删除</el-button></template></el-table-column></el-table>
</template><script>
export default {data() {return {tableData: [{ date: '2023-05-01', name: '张三' },{ date: '2023-05-02', name: '李四' }]};},methods: {handleEdit(row) {this.$message.info('编辑操作');},handleDelete(row) {this.$confirm('确认删除?', '提示', { type: 'warning' }).then(() => {this.tableData = this.tableData.filter(item => item !== row);this.$message.success('删除成功');}).catch(() => {});}}
};
</script>

五、项目实战:待办事项管理系统

1. 项目结构
src/
├── components/
│   ├── TaskList.vue
│   ├── AddTask.vue
├── App.vue
├── main.js
2. 核心功能代码

App.vue

<template><div><el-input v-model="newTask" placeholder="添加新任务" @keyup.enter="addTask"></el-input><el-button type="primary" @click="addTask">添加</el-button><task-list :tasks="tasks" @deleteTask="removeTask"></task-list></div>
</template><script>
import TaskList from './components/TaskList.vue';export default {data() {return {newTask: '',tasks: []};},methods: {addTask() {if (this.newTask.trim()) {this.tasks.push(this.newTask);this.newTask = '';}},removeTask(task) {this.tasks = this.tasks.filter(t => t !== task);}},components: { TaskList }
};
</script>

TaskList.vue

<template><div><el-checkbox-group v-model="checkedTasks"><el-checkbox v-for="task in tasks" :label="task" :key="task">{{ task }}</el-checkbox></el-checkbox-group><el-button @click="removeAll">清除已完成任务</el-button></div>
</template><script>
export default {props: ['tasks'],data() {return {checkedTasks: []};},methods: {removeAll() {this.$emit('deleteTask', this.checkedTasks.join(','));}}
};
</script>

六、自定义主题与样式优化

1. 修改默认样式

src/styles/element-overrides.css 中覆盖默认样式:

.el-button--primary {background-color: #007aff;border-color: #007aff;
}
2. 自定义主题色

通过 SCSS 变量定制主题:

// src/styles/variables.scss
$--color-primary: #409EFF;
$--color-success: #67C23A;
@import "~element-ui/packages/theme-chalk/src/index.scss";

七、总结与注意事项

  1. 按需引入 vs 全局引入

    • 小型项目可直接全局引入,大型项目建议按需加载以优化性能[3][5]。
  2. 表单验证

    • 使用 rules 属性定义校验规则,结合 trigger 触发时机(如 blurchange)[1][2]。
  3. 组件通信

    • 通过 $emitprops 实现父子组件通信,复杂场景可使用 EventBusVuex[4]。
  4. 移动端适配

    • 使用 el-col 的响应式属性(如 spanoffset)实现布局适配[2]。

通过以上步骤,您可以快速上手 Element UI,构建高效的前端界面。如需更深入的功能(如权限控制、复杂表格操作),可参考官方文档[1][4]。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912965.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 线程同步(一)同步概念介绍

目录 1.阻塞&#xff08;Blocking&#xff09; 2.阻塞 VS 轮询 3.线程状态 到目前为止&#xff0c;我们已经阐述了如何在线程上启动任务、配置线程以及实现双向数据传递。同时&#xff0c;我们也说明了局部变量是线程私有的&#xff0c;而引用可以通过共享字段在线程间传递以…

解决leetcode第3588题.找到最大三角形面积

3588.找到最大三角形面积难度&#xff1a;中等问题描述&#xff1a;给你一个二维数组coords&#xff0c;大小为nx2&#xff0c;表示一个无限笛卡尔平面上n个点的坐标。找出一个最大三角形的两倍面积&#xff0c;其中三角形的三个顶点来自coords中的任意三个点&#xff0c;并且该…

WIFI 安全测试记录

之前为实训课特意买的无线网卡没用上&#xff0c;但是我怎么可能让他荒废。所以用了几个下午&#xff0c;浅学了WiFi&#xff0c;当然没找到什么好教材&#xff0c;自己摸索着学的很基础&#xff0c;主要是当练习了&#xff0c;特此把我此前学习…WiFi密码实践过程写上来。 省流…

android14设置--网络--Internet副标题修改

收银机订制项目 插SIM卡&#xff0c;设备使用数据流量时&#xff0c;设置–网络–Internet副标题显示对应SIM卡运营商名称&#xff0c;客户要求修改这时的名称(注意图标也要同步修改) packages\apps\Settings\src\com\android\settings\network\InternetPreferenceController.j…

Web3区块链有哪些岗位?

Web3区块链领域的岗位丰富多样&#xff0c;涵盖技术开发、产品管理、运营、商务等多个方面&#xff0c;以下是具体介绍&#xff1a; - 技术开发类&#xff1a; - 智能合约开发工程师&#xff1a;负责编写、审计和优化智能合约&#xff0c;常见于DeFi开发&#xff0c;包括抵押…

解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题

场景重现在使用 MyBatis/Mybatis-Plus 框架对 MySQL 操作时习惯了字段名小驼峰映射&#xff0c;然而在操作 Elasticsearch 时发现字段名没有小驼峰映射。解决方法1. 使用 ObjectMapper 手动转换&#xff1a; 这是最直接也最常用的方法。 在 Spring Boot 应用中使用 ObjectMappe…

Error:Cannot find module ‘chokidar‘

错误复现 在vue开发中&#xff0c;出现报错&#xff1a;Error&#xff1a;Cannot find module ‘chokidar’ 原因 缺包导致 解决方案 直接安装依赖包 npm install chokidar依旧无效&#xff0c;删除node_modules重新安装 rm -rf node_modules npm i

Spring AI 向量数据库详解与 RAG 简单实战项目

一、什么是向量数据库&#xff1f; 向量数据库用于存储、检索稠密语义向量&#xff08;Embedding&#xff09;&#xff0c;是构建 RAG&#xff08;检索增强生成&#xff09;系统的核心组件。它支持近似最近邻搜索&#xff08;ANN&#xff09;&#xff0c;可根据语义相似度找出…

【RK3568+PG2L50H开发板实验例程】Linux部分/FPGA FSPI 通信案例

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 1. 简介 本案例旨在 ARM端运行 Linux系统&#xff0c;基通过 FSPI测试。 2. ARM端和 FPGA端通信流程 (1)ARM端实现SP…

github如何创建一个自己的仓库保姆级教程

文章目录 准备阶段(github官网)添加ssh公钥添加token创建仓库 本地设置本地代理创建仓库添加文件到仓库进行提交 准备阶段(github官网) 添加ssh公钥 创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录&#xff0c;有的话看下里面有没有id_rsa和id_rsa.pub这两个文件&#…

LabVIEW 网络流通信功能

LabVIEW 的网络流技术实现主机 VI&#xff08;Host VI&#xff09;与客户端 VI&#xff08;ClientVI&#xff09;间的双向数据交互&#xff0c;包含命令发送与波形数据传输&#xff0c;支持跨设备、跨进程的实时通信&#xff0c;满足分布式系统中数据交互与控制需求。 主机 VI逻…

Prompt 精通之路(一)- AI 时代的新语言:到底什么是 Prompt?为什么它如此重要?

AI 时代的新语言&#xff1a;到底什么是 Prompt&#xff1f;为什么它如此重要&#xff1f; 标签&#xff1a; #Prompt新手指南 #提示词入门 #AI指令 #人工智能 #ChatGPT &#x1f680; Prompt 精通之路&#xff1a;系列文章导航 第一篇&#xff1a;AI 时代的新语言&#xff1a…

uniapp 滚动tab

uniapp woui unibest <route lang"json5">{style: {navigationBarTitleText: 知识产权,navigationBarBackgroundColor: #C80F06,navigationBarTextStyle: white,backgroundColorTop: #C80F06,},} </route> <template><view class"bgc-b …

日事清驾驶舱模式上线:实时数据更新+项目管理+数据可视化,提升决策效率​

大家好&#xff01;我们在日事清最新更新中推出了一个令人激动的新功能——驾驶舱模式。这一全新界面将为企业管理者和团队提供一个全面、实时的数据展示平台。下面&#xff0c;让我们详细了解这个功能如何帮助您更好地把握企业动态和提升决策效率。 快速入口&#xff1a;一键激…

【Maven】Maven深度避坑指南:依赖冲突全维度解决方案与工业级实战(超万字解析)

注&#xff1a;本文基于50大型企业级项目经验&#xff0c;结合Maven底层源码机制&#xff0c;系统化解决依赖冲突问题。包含20个实战场景、10类特殊案例及5大防御体系构建方案。 Maven深度避坑指南&#xff1a;依赖冲突全维度解决方案与工业级实战&#xff08;超万字解析&#…

Rust Web 全栈开发(二):构建 HTTP Server

Rust Web 全栈开发&#xff08;二&#xff09;&#xff1a;构建 HTTP Server Rust Web 全栈开发&#xff08;二&#xff09;&#xff1a;构建 HTTP Server创建成员包/库&#xff1a;httpserver、http解析 HTTP 请求HTTP 请求的构成构建 HttpRequest 构建 HTTP 响应HTTP 响应的构…

小架构step系列01:小架构初衷

1 概述 小公司做业务服务&#xff0c;需要聚焦到实际的业务上&#xff0c;尽快通过业务服务客户&#xff0c;给客户创建价值&#xff0c;公司才能生存下去。在技术上采用的Web应用架构具备以下特点&#xff1a; 主要由开源组件组装而成。这样既可以节省成本&#xff0c;也可以把…

苹果AR/VR头显路线图曝光,微美全息推进AI/AR智能眼镜新品开启视觉体验篇章

日前&#xff0c;郭明錤发表了一篇关于苹果&#xff08;AAPL.US&#xff09;2025-2028头戴式产品路线图的文章&#xff0c;里面提到苹果正在开发涵盖MR头显、AI眼镜、AR眼镜、Birdbath眼镜等共计7款设备。 苹果的头显设备中&#xff0c;大量出货的产品是类似于Ray-Ban Meta的智…

python pyecharts 数据分析及可视化(2)

一、任务要求 任务二&#xff1a;感冒高发期分析 【任务说明】 感冒是一种常见的急性上呼吸道病毒性感染性疾病&#xff0c;多由鼻病 毒、副流感病毒、呼吸道合胞病毒、埃可病毒、柯萨奇病毒、冠状病 毒、腺病毒等引起。临床表现为鼻塞、喷嚏、流涕、发热、咳嗽、头 痛等&#…

React自学 基础一

React基础 React 是一个由 Facebook&#xff08;现 Meta&#xff09;开发并维护的、开源的 JavaScript 库&#xff0c;主要用于 构建用户界面&#xff08;UI&#xff09;&#xff0c;尤其是单页面应用程序中的动态、交互式界面。 简单示例&#xff1a; import React, { useSt…