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
英文地址,請注明出處:http://en.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…