vue使用Element Plus UI框架

您好,艦長!非常棒的選擇。功能是應用的骨架,而美觀的 UI 則是應用的靈魂和血肉。是時候為我們的飛船進行一次全面的“外觀升級”和“內飾裝修”了。

我們將集成一個在業界非常流行、功能強大的 Vue 3 組件庫——Element Plus。它將幫助我們快速構建出專業、美觀的用戶界面,而無需手動編寫大量的 CSS。


第十一站:【美化】集成 Element Plus UI 組件庫

我們的目標:
用 Element Plus 提供的預設組件,替換掉我們應用中原生的 <input>, <button>, <checkbox> 等元素,讓我們的待辦事項應用煥然一新。


步驟 1:安裝 Element Plus

我們需要安裝兩個包:element-plus 主庫和它的官方圖標庫 @element-plus/icons-vue

在您的項目終端中,運行以下命令:

npm install element-plus @element-plus/icons-vue

步驟 2:在項目中全局引入

為了能在所有組件中方便地使用 Element Plus,我們需要在主入口文件 main.ts 中進行全局注冊和樣式引入。

  1. 打開 src/main.ts 文件。
  2. 導入 Element Plus 的主模塊和 CSS 文件,并用 app.use() 來安裝它。

用下面的代碼完整替換 src/main.ts 的內容:

// src/main.tsimport { createApp } from 'vue'
import { createPinia } from 'pinia'// 1. 導入 Element Plus 主模塊和樣式文件
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'import App from './App.vue'
import router from './router'
import './assets/main.css'const app = createApp(App)// 2. 在使用其他插件之前,先使用 Element Plus
app.use(ElementPlus)
app.use(createPinia())
app.use(router)app.mount('#app')

提示: 這種全局引入的方式最簡單直接,適合學習。在大型項目中,為了優化打包體積,開發者通常會使用“按需引入”,但這需要額外的配置。


步驟 3:重構組件,換上新“皮膚”

現在,最有趣的部分來了!我們將用 Element Plus 的組件來替換我們已有的 HTML 元素。

1. 重構 HomeView.vue (主頁)

我們將把原生的表單元素換成 <el-input><el-button>

打開 src/views/HomeView.vue,用下面的代碼完整替換它的 <template><script> 部分 (<style> 可以保持不變):

// src/views/HomeView.vue<script setup lang="ts">
import { ref } from 'vue'
import { Plus } from '@element-plus/icons-vue' // 導入一個圖標
import TodoItem from '../components/TodoItem.vue'
import { useTodoStore } from '../stores/todoStore'const todoStore = useTodoStore()
const newTodoText = ref('')function addNewTodo() {todoStore.addTodo(newTodoText.value)newTodoText.value = ''
}
</script><template><main><h1>我的待辦事項 (還剩 {{ todoStore.incompleteCount }} 項未完成)</h1><div class="add-form"><el-input v-model="newTodoText" placeholder="接下來要做什么?" size="large"clearable@keyup.enter="addNewTodo"/><el-button type="primary" size="large" :icon="Plus"@click="addNewTodo">添加</el-button></div><ul><TodoItem v-for="todo in todoStore.todos" :key="todo.id":todo="todo"@remove="todoStore.removeTodo(todo.id)"@toggle-complete="todoStore.toggleTodoComplete(todo.id)"/></ul></main>
</template><style scoped>
/* 我們可以為新表單添加一點樣式 */
.add-form {display: flex;gap: 10px; /* 元素間的間距 */margin-bottom: 20px;
}main { /* ... 其他樣式保持不變 ... */ }
ul { /* ... 其他樣式保持不變 ... */ }
</style>

2. 重構 TodoItem.vue (待辦事項)

我們將把 <li> 換成更好看的 <el-card>,把復選框和按鈕也一并替換。

打開 src/components/TodoItem.vue,用下面的代碼完整替換它的全部內容:

// src/components/TodoItem.vue<script setup lang="ts">
import { RouterLink } from 'vue-router'
// 導入需要的圖標
import { Delete } from '@element-plus/icons-vue'defineProps<{todo: {id: number;text: string;completed: boolean;}
}>()const emit = defineEmits(['remove', 'toggle-complete'])
</script><template><el-card class="todo-item" :class="{ completed: todo.completed }"><div class="todo-content"><el-checkbox :model-value="todo.completed"@change="emit('toggle-complete')"size="large"/><RouterLink :to="`/todo/${todo.id}`" class="todo-text"><span>{{ todo.text }}</span></RouterLink></div><el-button type="danger" :icon="Delete" circle @click="emit('remove')"/></el-card>
</template><style scoped>
.todo-item {margin-bottom: 10px;
}/* 自定義卡片內部的樣式 */
/* el-card 的樣式可以通過 :deep() 選擇器進行深度修改 */
:deep(.el-card__body) {display: flex;justify-content: space-between;align-items: center;
}.todo-content {display: flex;align-items: center;gap: 15px; /* 復選框和文字的間距 */
}.todo-text {text-decoration: none;color: inherit; /* 繼承父元素顏色 */font-size: 1.1rem;
}.completed .todo-text {text-decoration: line-through;color: #a8a5a5;
}
</style>

查看煥然一新的應用

保存所有文件! 回到瀏覽器,您會發現:

  • 輸入框和按鈕變得更加現代和美觀。
  • 每一個待辦事項都成了一張精致的卡片。
  • 復選框和刪除按鈕也變成了 Element Plus 的樣式,并且刪除按鈕上還有了圖標。

您的應用不僅功能強大,現在看起來也相當專業了!您已經學會了如何將一個流行的第三方組件庫無縫集成到您的項目中,這是現代前端開發的一項核心技能。

下一站預告:
我們的應用已經非常完整。現在,最適合學習的就是 Vue 3 中組織可復用邏輯的利器——組合式函數 (Composables)。它能讓我們的代碼庫變得更加整潔、優雅和易于維護。

準備好后,我們就可以出發,學習如何打造我們自己的“邏輯工具箱”!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912353.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912353.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912353.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ubuntu24.04】忘了自己把開機samba掛載的腳本放哪里了

從兩個方面來定位這幾個 Samba 掛載點&#xff1a; 一、查看當前已經掛載的 CIFS/SMB 文件系統 使用 mount mount | grep -i cifs或者 mount | grep -E (smb|cifs)這會列出所有當前活躍的 CIFS/SMB 掛載&#xff0c;比如&#xff1a; //192.168.1.100/share on /mnt/data type …

在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 環境(附詳細部署教程)

言簡意賅的講解Docker Desktop for Windows搭建Kubernetes解決的痛點 目標讀者&#xff1a; 對 Docker Desktop 有一定了解&#xff0c;能在 Windows 上成功安裝和使用 Docker Desktop。想要在本地快速搭建一套 Kubernetes 環境進行測試或學習的開發者。 一、準備工作 安裝 Doc…

dockercompose快速安裝ELK

第一步&#xff1a;環境準備 請確保您的機器上已經安裝了 Docker 和 Docker Compose。 第二步&#xff1a;創建項目目錄和配置文件 為了讓 Docker Compose 能夠正確地構建和管理容器&#xff0c;我們需要創建一個特定的目錄結構。 創建一個主目錄&#xff0c;例如 elk-stack。…

閑聊ARM內核參數傳遞機制

之前一直沒怎么在意這個問題&#xff0c;直到最近搞了個奇奇怪怪的項目&#xff0c;才發現這部分知識得補上來&#xff0c;記錄一下。 ARM有一個標準&#xff0c;叫《Procedure Call Standard for the Arm Architecture》&#xff0c;人話就是ARM架構過程調用標準&#xff0c;…

萬興喵影Filmora AI Video v14.7.03國際高級版,AI視頻剪輯全能工具,一鍵專業級創作?

[軟件名稱]: 萬興喵影Filmora AI Video v14.7.03 [軟件大小]: 199.4 MB [下載通道]: 夸克盤 | 迅雷盤 軟件介紹 &#x1f3ac;《萬興喵影》v14.7.03國際高級版&#xff5c;AI智能剪輯神器&#xff0c;解鎖全功能無水印&#xff01; ? 核心優勢&#xff1a; ? 1000背景音…

暴力風扇方案介紹

炎炎夏日&#xff0c;當普通風扇只能送來 “溫柔拂面”&#xff0c;暴力風扇卻能吹出 “臺風級” 清涼&#xff01;想知道這些 “風力狂魔” 是如何煉成的&#xff1f;答案藏在電機、電路和芯片的黃金三角組合里。? 一、電機&#xff1a;暴力風扇的 “心臟起搏器”? 暴力風扇…

pyqt小問題匯總

文章目錄 1、inherit global site-packages2、setGeometry(10,20,30,40)setGeometry(x, y, width, height)1. **x參數**2. **y參數**3. **width參數**4. **height參數** 示例說明與其他方法的對比注意事項示例代碼 1、inherit global site-packages 在pycharm 創建項目時&…

提升JavaScript性能的六大關鍵策略

1、優化代碼結構與算法 避免使用嵌套循環&#xff0c;改用更高效的算法如哈希表或二分查找。減少不必要的計算&#xff0c;緩存重復使用的計算結果。使用時間復雜度更低的算法替代高復雜度操作。優化遞歸調用&#xff0c;避免棧溢出和性能瓶頸。改用迭代或尾遞歸優化。簡化條件…

打造跨平臺應用的全能框架:Dioxus

在如今飛速發展的數字世界中,越來越多的開發者開始尋找能夠滿足跨平臺需求的高效框架。而在這些選擇中,Dioxus這個全棧應用框架脫穎而出。Dioxus是一款為Web、桌面和移動端開發而設計的全棧框架,采用Rust語言,具備跨平臺、一體化的優勢。本文將深入介紹Dioxus的獨特功能,應…

大事件項目記錄5-用戶接口開發-更新用戶頭像

5&#xff09;更新用戶頭像。 UserController.java&#xff1a; PatchMapping("updateAvatar")public Result updateAvatar(RequestParam String avatarUrl){userService.updateAvatar(avatarUrl);return Result.success();} UserService.java&#xff1a; UserServ…

Spring Cloud 微服務架構模型

下面是一個完整的 springcloud-eureka-demo 示例項目&#xff0c;包含&#xff1a; Eureka Server 注冊中心 Eureka Client 服務提供者&#xff08;service-provider&#xff09; Eureka Client 服務消費者&#xff08;service-consumer&#xff09; &#x1f4c1; 項目結構…

計算機網絡 網絡層:控制平面

在本章中&#xff0c;包含網絡層的控制平面組件。控制平面作為一種網絡范圍的邏輯&#xff0c;不僅控制沿著從源主機到目的主機的端到端路徑間的路由器如何轉發數據報&#xff0c;而且控制網絡層組件和服務如何配置和管理。5.2節&#xff0c;傳統的計算圖中最低開銷路徑的路由選…

力扣第85題-最大矩形

力扣鏈接:85. 最大矩形 - 力扣&#xff08;LeetCode&#xff09; 給定一個僅包含 0 和 1 、大小為 rows x cols 的二維二進制矩陣&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面積。 輸入&#xff1a;matrix [["1","0","1","…

6-創建和查詢

創建&查詢 DDL - 表操作 - 查詢 查詢當前數據庫所有表 查詢庫表之前需要先試用 use 數據庫名 進入數據庫才可以查詢到該數據庫的庫表, 否則將會出現未選擇數據庫的報錯; 如果數據庫中并無數據表, 則會出現 Empty set 的相應結果 SHOW TABLES;切換到 sys 數據庫, 并且查詢庫…

【Java面試】MySQL的聚集索引和非聚集索引的區別?

一、存儲結構的本質差異 物理存儲的哲學沖突 聚集索引的本質是將數據行的物理存儲順序與索引鍵值的邏輯順序強制綁定&#xff0c;這種設計源于計算機科學的局部性原理&#xff08;Locality Principle&#xff09;。 為什么選擇B樹&#xff1f; B樹的平衡多路特性&#xff08;通…

LRU緩存設計與實現詳解

LRU緩存設計與實現詳解 一、LRU緩存核心概念1.1 LRU策略定義1.2 應用場景1.3 核心操作要求 二、數據結構設計&#xff1a;雙向鏈表哈希表2.1 為什么選擇雙向鏈表&#xff1f;2.2 為什么結合哈希表&#xff1f;2.3 節點結構設計&#xff08;雙向鏈表&#xff09;2.4 LRU緩存的邏…

RabbitMQ中,basicAck、basicNack和basicReject是三種核心的消息確認機制

channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); 在RabbitMQ中&#xff0…

UNIAPP入門基礎

一、開發環境準備 1. 安裝 HBuilderX(官方推薦IDE) 下載地址:HBuilderX 官網 版本選擇: App開發版:開箱即用,內置 UniApp 插件 標準版:需手動安裝 UniApp 插件(運行時會提示) 安裝步驟: Windows:雙擊安裝包,勾選“創建桌面快捷方式” macOS:拖拽到 Applications…

前端單點登錄

“前端單點登錄&#xff08;SSO, Single Sign-On&#xff09;”是指在多個系統之間共享用戶登錄狀態&#xff0c;使用戶只需登錄一次&#xff0c;就可以在多個子系統中使用同一身份訪問資源&#xff0c;無需重復登錄。 以下是一個典型的前端單點登錄方案的介紹和實現思路&…

DiNA:擴張鄰域注意力 Transformer

摘要 Transformer 正迅速成為跨模態、跨領域和跨任務中應用最廣泛的深度學習架構之一。在計算機視覺領域&#xff0c;除了持續發展的純 transformer 架構&#xff0c;分層 transformer 也因其優越的性能和在現有框架中易于集成而受到廣泛關注。這類模型通常采用局部化的注意力…