基于Vue2 + Element 實現任務列表管理功能的詳細教程

前言:本文介紹的是如何從0開始搭建Vue2項目到1實現對任務添加、刪除和篩選的功能,🔗?相關鏈接Vue 入門(安裝與應用超詳細教程)


??【作者主頁—📚優質文章、獲取更多優質源碼】

目錄

一 . 項目搭建

1.1 安裝node.js

1.2 配置環境變量

1.3 創建Vue項目

二. 打開項目

三. 運行項目

四. 項目展示

五. 更多干貨


一 . 項目搭建

1.1 安裝node.js

官網:下載 | Node.js 中文網,根據自己的系統進行選擇

下載完成之后,將.zip文件進行解壓,然后 win+R 輸入cmd輸出node -v,有版本號即安裝成功

?

1.2 配置環境變量

右鍵此電腦選擇屬性->高級系統設置->環境變量->系統變量->雙擊Path->新建->輸入解壓后的文件夾路徑,如D:\env\node-v22.15.0-win-x64\node-v22.15.0-win-x64,最后一定要點擊三次確定

1.3 創建Vue項目

使用 Vue CLI 創建項目,右鍵命令提示符,選擇以管理員身份運行,執行以下命令

npm install -g @vue/cli
vue create todo-list # 創建一個名為todo-list的Vue項目

下一步進入項目目錄

cd todo-list

安裝 Vue 2?

npm install vue@2

在項目目錄下安裝 Element UI

npm i element-ui -S

執行完以上步驟后,創建Vue項目完成,如下圖所示

二. 打開項目

使用vscode、hbuilder等工具打開都可以,目錄結構如下

在 main.js 中引入 Element UI,打開src/main.js,添加以下代碼

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)Vue.config.productionTip = falsenew Vue({render: h => h(App),
}).$mount('#app')

接著編寫App.vue,添加以下<template>部分代碼

<template><div id="app"><h3>To Do List</h3><el-form :inline="true" class="add-task-form"><el-form-item><el-select v-model="selectedType" placeholder="請選擇類型!"><el-option label="普通任務" value="normal"></el-option><el-option label="重要任務" value="important"></el-option><el-option label="緊急任務" value="urgent"></el-option></el-select></el-form-item><el-form-item><el-input v-model="newTask" placeholder="請輸入新的任務!"></el-input></el-form-item><el-form-item><el-button type="primary" @click="addTask">添加任務</el-button></el-form-item></el-form>.....................................
</template>
el-form是 Element UI 的表單組件,:inline="true"使其內聯顯示,el-form-item是表單項組件,el-select是下拉選擇框,v-model="selectedType"將用戶選擇的值綁定到 Vue 實例的selectedType數據屬性上,el-option是下拉選項,el-input是輸入框,v-model="newTask"將用戶輸入的值綁定到newTask數據屬性,el-button是按鈕,type="primary"設置為主要按鈕樣式,@click="addTask"綁定了點擊事件,點擊時調用addTask方法。

接著寫以下任務列表表格的實現代碼

<template>...........此處代碼省略,銜接上個代碼塊................<el-table :data="filteredTasks" border style="width: 100%"><el-table-column prop="name" label="任務名稱"></el-table-column><el-table-column label="任務類型"><template #default="scope"><el-tag :type="getTagType(scope.row.type)">{{scope.row.type}}</el-tag></template></el-table-column><el-table-column label="任務狀態"><template #default="scope"><el-tag :type="getTagStatusType(scope.row.status)">{{scope.row.status}}</el-tag></template></el-table-column><el-table-column label="操作"><template #default="scope"><el-button size="mini" icon="el-icon-check" @click="completeTask(scope.row)" v-if="scope.row.status === '未完成'"></el-button><el-button size="mini" type="primary" icon="el-icon-edit" @click="editTask(scope.row)"></el-button><el-button size="mini" type="danger" icon="el-icon-delete" @click="deleteTask(scope.row)"></el-button></template></el-table-column></el-table>................................
</template>

el-table是表格組件,:data="filteredTasks"綁定了要展示的數據,filteredTasks是計算屬性,通過el-tag組件展示任務類型和狀態,并根據不同類型調用getTagType和getTagStatusType方法設置標簽樣式。“操作” 列包含三個按鈕

接下來添加以下任務統計信息和篩選框的代碼

<template>...................................<div class="task-summary">共{{tasks.length}}項任務 已完成{{completedTasks.length}}項任務 未完成{{uncompletedTasks.length}}項任務</div><el-row class="filter-row"><el-col :span="8"><el-select v-model="filterType" placeholder="選擇類型!"><el-option label="全部" value="all"></el-option><el-option label="普通任務" value="normal"></el-option><el-option label="重要任務" value="important"></el-option><el-option label="緊急任務" value="urgent"></el-option></el-select></el-col><el-col :span="8"><el-select v-model="filterStatus" placeholder="選擇狀態!"><el-option label="全部" value="all"></el-option><el-option label="已完成" value="已完成"></el-option><el-option label="未完成" value="未完成"></el-option></el-select></el-col></el-row></div>
</template>

div標簽展示任務統計信息,通過插值表達式({{}})展示任務總數、已完成任務數和未完成任務數,el-row和el-col是 Element UI 的柵格布局組件,用于排版。兩個el-select下拉框分別用于篩選任務類型和任務狀態,v-model綁定對應數據屬性,實現篩選功能。?

接下來添加以下script代碼,定義了組件的數據、計算屬性和方法

<script>
export default {data() {return {newTask: '',selectedType: '',tasks: [{ name: '任務1', type: 'normal', status: '已完成' },{ name: '任務2', type: 'important', status: '未完成' },{ name: '任務3', type: 'urgent', status: '已完成' }],filterType: 'all',filterStatus: 'all'}},computed: {filteredTasks() {return this.tasks.filter(task => {const typeMatch = this.filterType === 'all' || task.type === this.filterType;const statusMatch = this.filterStatus === 'all' || task.status === this.filterStatus;return typeMatch && statusMatch;});},completedTasks() {return this.tasks.filter(task => task.status === '已完成');},uncompletedTasks() {return this.tasks.filter(task => task.status === '未完成');}},methods: {addTask() {if (this.newTask.trim()!== '') {this.tasks.push({name: this.newTask,type: this.selectedType,status: '未完成'});this.newTask = '';this.selectedType = '';}},completeTask(task) {task.status = '已完成';},editTask(task) {console.log('編輯任務', task);},deleteTask(task) {const index = this.tasks.indexOf(task);if (index > -1) {this.tasks.splice(index, 1);}},getTagType(type) {switch (type) {case 'normal':return 'info';case 'important':return 'warning';case 'urgent':return 'danger';default:return 'info';}},getTagStatusType(status) {return status === '已完成'? 'green' : 'default';}}
}
</script>

最后,定義了組件內一些元素的局部樣式,給添加任務表單、篩選框所在行和任務統計信息區域設置了外邊距等樣式

<style scoped>
.add-task-form {margin-bottom: 20px;
}
.filter-row {margin-top: 20px;
}
.task-summary {text-align: right;margin-top: 10px;
}
</style>

三. 運行項目

在項目的根目錄下執行以下命令 ,如下圖項目啟動成功,然后瀏覽器訪問 http://localhost:8080/

npm run serve

四. 項目展示

進入頁面后默認顯示任務1、2、3?,以下任務4、5、6是我添加的,如下圖所示

下圖是以任務類型進行的一級篩選

下圖是以任務類型和未完成的任務進行的二級篩選

五. 更多干貨

--------------------- - -----?--------- ? ---------?--------------------?-------
1.如果我的博客對你有幫助或你喜歡我的博客內容,請 “👍點贊” “??評論” “★收藏” 一鍵三連哦!

2.??【👇🏻👇🏻👇🏻關注我| 獲取更多源碼 | 優質文章】 帶您學習各種前端插件、3D炫酷效果、圖片展示、文字效果、以及整站模板 、HTML模板 、微信小程序模板 、等! 「在這里一起探討知識,互相學習」!

3.以上內容技術相關問題?歡迎一起交流學習 ? ? ? ? ?
————————————————

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

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

相關文章

【PostgreSQL數據分析實戰:從數據清洗到可視化全流程】1.4 數據庫與表的基本操作(DDL/DML語句)

&#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 文章大綱 1.4 數據庫與表的基本操作&#xff08;DDL/DML語句&#xff09;1.4.1 數據庫生命周期管理&#xff08;DDL核心&#xff09;1.4.1.1 創建數據庫&#xff08;CREATE DATABASE&…

Fabrice Bellard(個人網站:?bellard.org?)介紹

Fabrice Bellard 是法國人&#xff0c;國際著名程序員。1972年生于法國Grenoble&#xff0c;大學就讀于巴黎高等綜合理工學院&#xff0c;后在國立巴黎高等電信學院攻讀。 Fabrice Bellard&#xff08;個人網站&#xff1a;?bellard.org?&#xff09;是計算機領域最具影響力…

USB布局布線

1USB簡介 USB是通用串行總線的英文縮寫&#xff0c;是連接外部裝置的一個串口總線標準&#xff0c;也是一種輸入輸出接口的技術規范&#xff0c;被廣泛地應用于個人電腦和移動設備等信息通迅產品&#xff0c;并擴展到攝影器材&#xff0c;數字電視&#xff08;機頂盒&#xff0…

【數據結構】線性表--鏈表

【數據結構】線性表--鏈表 一.前情回顧二.鏈表的概念三.鏈表的實現1.鏈表結點的結構&#xff1a;2.申請新結點函數&#xff1a;3.尾插函數&#xff1a;4.頭插函數&#xff1a;5.尾刪函數&#xff1a;6.頭刪函數&#xff1a;7.在指定結點之前插入&#xff1a;8.在指定結點之后插…

Mybatis-plus代碼生成器的創建使用與詳細解釋

Mybatis-plus代碼生成器的創建使用與詳細解釋 一、代碼生成器概述 1. 定義(什么是代碼生成器) 在軟件開發過程中&#xff0c;存在大量重復性的代碼編寫工作&#xff0c;例如實體類、Mapper 接口、Service 接口及實現類等。代碼生成器就是為了解決這類問題而誕生的工具。MyBa…

drawDB:打造高效數據庫設計流程

drawDB&#xff1a;打造高效數據庫設計流程 drawDB 簡介資源鏈接 核心功能詳解1. 直觀的實體關系圖設計2. SQL 腳本生成3. SQL 導入功能4. 本地化存儲與分享功能5. 自定義主題與外觀 安裝和使用教程本地開發環境搭建構建生產版本Docker 部署基本使用方法 應用場景和實際價值適用…

基于 ESP32 和 GC9D01 0.71寸TFT屏幕的逼真眼睛與寫輪眼動態顯示

近期&#xff0c;我利用 ESP32 和 GC9D01 0.71’TFT 進行了一次有趣的顯示項目開發&#xff0c;成功實現了在該小尺寸屏幕上繪制逼真眼睛和寫輪眼的效果。 硬件準備 主控板 &#xff1a;ESP32&#xff0c;具備強大的處理能力和豐富的接口資源&#xff0c;能夠高效地處理圖像數…

LeetCode58_最后一個單詞的長度

LeetCode58_最后一個單詞的長度 標簽&#xff1a;#字符串Ⅰ. 題目Ⅱ. 示例 0. 個人方法 標簽&#xff1a;#字符串 Ⅰ. 題目 給你一個字符串 s&#xff0c;由若干單詞組成&#xff0c;單詞前后用一些空格字符隔開。返回字符串中 最后一個 單詞的長度。 單詞 是指僅由字母組成、…

論文閱讀:MAXIM Multi-Axis MLP for Image Processing

這是 2022 CVPR 上的一篇文章&#xff0c;介紹了用 MLP 做 low-level 圖像處理的工作 Abstract 近年來&#xff0c;Transformer 和多層感知機&#xff08;MLP&#xff09;模型的發展為計算機視覺任務提供了新的網絡架構設計。盡管這些模型在圖像識別等許多視覺任務中已被證明…

PostgreSQL初試

文章目錄 1 PostgreSQL 簡介2 PostgreSQL 與 MySQL 的區別3 PostgreSQL 的安裝1_Linux部署2_容器化部署 4 PostgreSQL的配置1_遠程連接配置2_配置數據庫的日志3_設置數據庫密碼 5 PostgreSQL 基本操作1_用戶操作2_權限操作3_創建一個自己的用戶4_差異補充 6 安裝圖形化界面1_使…

Fortran語言,do-end do循環,相互包含測試,自動性能優化

1&#xff09;上代碼 !$omp parallel private(n, j, dx, dy, dz, r, a)do n 1, nsteps!$omp dodo i 0, nparticles - 1x_tmp(i) x(i) vx(i) * dty_tmp(i) y(i) vy(i) * dtz_tmp(i) z(i) vz(i) * dtdo j 0, nparticles - 1dx x(j) - x(i)dy y(j) - y(i)dz z(j) - z(…

Cona編譯問題

問題描述 Clion 使用conan插件配置了C工程&#xff0c;然后想通過命令行進行編譯執行。 出現以下錯誤 CMake Error at /usr/local/Cellar/cmake/3.30.1/share/cmake/Modules/CMakeDetermineSystem.cmake:152 (message):Could not find toolchain file: conan_toolchain.cmake…

Qt實現 hello world + 內存泄漏(5)

文章目錄 實現hello world的兩種方式通過圖形化的方式通過純代碼的方式1. 新老頭文件的說明2.堆或棧上創建對象的選擇3.QString的說明 內存泄漏問題 實現hello world的兩種方式 通過圖形化的方式 通過圖形化的方式&#xff0c;在界面上創建出一個控件&#xff0c;顯示出hello …

【翻譯、轉載】【譯文】模型上下文協議(Model Context Protocol, MCP)簡介

原文地址&#xff1a; https://michaelwapp.medium.com/model-context-protocol-mcp-an-introduction-guide-25736f3dd672 在人工智能和 AI 驅動應用日新月異的格局中&#xff0c;一種與大型語言模型&#xff08;LLM&#xff09;交互的新方式正在興起。隨著 AI 智能體&#x…

[方法論]軟件工程中的軟件架構設計:從理論到實踐的深度解析

文章目錄 軟件架構設計&#xff1a;從理論到實踐的深度解析引言一、軟件架構設計的核心目標體系1.1 質量屬性矩陣1.2 架構權衡藝術 二、架構設計方法論演進2.1 傳統設計范式2.2 現代架構方法論2.3 設計模式演化路徑 三、主流架構風格全景圖3.1 單體架構&#xff08;Monolithic&…

【win11 】win11 鍵盤測試

我的鍵盤是支持mac和win的&#xff0c;fn tab 就能切換&#xff0c;有可能是用錯了模式&#xff0c;導致 我alt a 就會彈出 win11的 wifi 等菜單控制 鍵盤測試網站 https://keyboard.bmcx.com/ 識別到我按下的是alt

Linux環境部署iview-admin項目

環境&#xff1a;阿里云服務 系統&#xff1a;CentOS7.X系統 1、下載源碼安裝包 wget https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz2、解壓并放入指定目錄 tar -xf node-v14.17.3-linux-x64.tar.xz && mv node-v14.17.3-linux-x64 /usr/local/no…

VSCode常用插件推薦

文章目錄 VSCode常用插件推薦1 Git相關插件2 代碼格式3 AI工具4 語言插件通用工具參考 VSCode常用插件推薦 1 Git相關插件 2 代碼格式 3 AI工具 4 語言插件 通用工具 參考 50 個 VSCode 必裝插件推薦 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg

【Unity】使用XLua進行熱修復

準備工作&#xff1a; &#xff08;1&#xff09;將XLua的Tool拖入Asset &#xff08;2&#xff09;配置熱修復 &#xff08;3&#xff09;運行Genrate Code &#xff08;4&#xff09;運行Hotfix Inject In Editor 編寫腳本&#xff08;注意類上帶有[Hotfix]&#xff09; [Hot…

javaEE——單例模式

目錄 前言1.概念2. 實現3. 比較和改進總結 前言 本篇文章來介紹單例模式&#xff0c;并講述在保證線程安全的前提下&#xff0c;單例模式的寫法。 1.概念 單例模式是一種設計模式&#xff0c;可以說是寫代碼的一種模板&#xff0c;如果在一些固定的場景下按照設計模式進行寫…