前端應用開發實驗:組件應用

目錄

  • 實驗目的
  • 相關知識點
  • 實驗內容及要求
    • 代碼實現
    • 效果

實驗目的

(1)掌握組件的創建方法(全局組件、局部組件);
(2)重點學會組件之間的數據傳遞(prop傳值、自定義事件);
(3)學會動態組件的創建。

相關知識點

組件是 Vue.js 提供的最強大的功能之一。通過開發組件可以封裝可復用的代碼,并注冊為標簽,從而實現擴展 HTML 元素的功能。
(1)注冊組件:有全局注冊和局部注冊兩種方式。
全局組件(全局注冊的組件)可以在所有實例中使用。注冊全局組件的語法格式如下:
Vue.component(tagName, options)
其中,tagName表示組件名稱,建議遵循 W3C 規范中組件命名方式,即字母全部小寫并包含一個連字符“-”;option可以是應用 Vue.extend()方法創建的一個組件構造器,也可以是組件的選項對象。
在組件注冊之后,就可以在 Vue 根實例中以自定義元素形式來使用該組件了。使用組件的語法格式如下:

其中,tagName:表示組件名稱。
通過使用 Vue 實例或父組件中的 components 選項,可以注冊一個局部組件(只能在當前實例或父組件中使用)。其中,屬性名表示所定義組件的名稱,屬性值表示該組件的選項對象。
(2)數據傳遞
因為組件實例的作用域是相互獨立的,所以子組件的模板無法直接引用父組件中的數據,反之亦然。為了實現組件之間的數據傳遞,Vue.js提供了相應的數據傳遞機制。
父組件通過使用自定義屬性 Prop 給子組件傳遞數據。在組件選項對象的props選項中定義 Prop 屬性。除了可以傳遞靜態數據外,可以通過使用v-bind 指令綁定屬性的方式將父組件中的data數據傳遞給子組件。每當父組件的數據發生變化時,子組件也會隨之變化。由于HTML中的屬性名是不區分大小寫的,所以當 props 中的命名采用“小駝峰”方式,需要在調用組件的標簽中使用其等價的短橫線分割的命名方式來命名屬性。
子組件使用自定義事件來向父組件傳遞數據。子組件可以通過調用內建的 e m i t ( ) 方法并傳入自定義事件名稱來觸發自定義事件。格式如下: v m . emit()方法并傳入自定義事件名稱來觸發自定義事件。格式如下: vm. emit()方法并傳入自定義事件名稱來觸發自定義事件。格式如下:vm.emit(eventName, […args])
其中,eventName: 傳入的事件名稱;[…args]: 可選,觸發事件傳遞的參數。
父組件則可以像處理原生DOM事件一樣通過v-on指令監聽子組件實例的自定義事件。
如果想要在某個組件的根元素上監聽一個原生事件,可以使用 v-on 指令的 native 修飾符。
(3)動態組件
Vue.js允許使用動態組件,讓多個組件使用同一個掛載點,根據條件在不同組件之間動態切換。動態組件通常應用在路由控制或選項卡切換中。
通過使用元素,動態綁定它的 is 屬性,根據 is 屬性的值來判斷使用哪個組件。有時需要保持某些組件的狀態,以避免重復渲染,可以使用一個元素將動態組件包裹起來。

實驗內容及要求

運用組件的相關知識實現選項卡的切換,點擊刪除,刪除相應電影,效果如圖1~3所示。
在這里插入圖片描述

圖1
在這里插入圖片描述

圖2
在這里插入圖片描述

圖3

參考基礎代碼如下:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

請在此基礎上,利用Vue組件相關知識完成代碼的編寫和調試。

代碼實現

<!DOCTYPE html>
<html>
<head><title>Vue 電影票房排序示例</title><meta charset="UTF-8"><style> body { font-family: Arial, sans-serif; background-color: #f7f7f7; margin: 0; padding: 0; } #app { max-width: 400px; margin: 0 auto; padding: 20px; background-color: #fff; border-radius: 5px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } h1 { font-size: 24px; margin-bottom: 20px; } button { background-color: #007bff; color: #fff; border: none; border-radius: 3px; padding: 5px 10px; cursor: pointer; margin-right: 10px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } 
</style> 
</head>
<body><div id="app"><!-- 排序按鈕 --><button @click="sortByBoxOffice">熱播</button><button @click="reverseOrder">經典</button><!-- 電影列表 --><ul><li v-for="movie in movies" :key="movie.id">{{ movie.name }} - 票房: {{ movie.boxOffice }}<!-- 刪除按鈕 --><button @click="deleteMovie(movie.id)">刪除</button></li></ul></div><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><script>new Vue({el: '#app',data: {movies: [{ id: 1, name: '原神,啟動!', boxOffice: 900 },{ id: 2, name: '我要玩王者榮耀', boxOffice: 1200 },{ id: 3, name: '三國殺司馬游戲', boxOffice: 500 },{id:4,name:'一就是一而就是二',boxOffice:1000}// 更多電影...],originalOrder: []},created() {// 在組件創建時保存原始順序this.originalOrder = [...this.movies];},methods: {sortByBoxOffice() {// 按票房排序當前電影列表this.movies.sort((a, b) => b.boxOffice - a.boxOffice);},reverseOrder() {// 恢復到刪除操作之前的順序this.movies = [...this.originalOrder];},deleteMovie(id) {// 刪除指定 ID 的電影并更新原始順序this.movies = this.movies.filter(movie => movie.id !== id);this.originalOrder = this.originalOrder.filter(movie => movie.id !== id);}}});</script>
</body>
</html>

效果

點擊經典
在這里插入圖片描述
點擊熱播
在這里插入圖片描述
點擊刪除
在這里插入圖片描述
刪除后仍然可以排序
在這里插入圖片描述

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

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

相關文章

SAP 用事務碼SQVI 制作簡單的ALV報表

我們在項目實施和運維的過程中經常會接到用戶的很多需求&#xff0c;有很大的一部分需求可能都是一些報表的需求&#xff0c;有些報表的需求需要開發人員使用ABAP編寫&#xff0c;但是有些報表僅僅只是兩個或者多個報表的表關聯就可以實現。這個時候我們就可以用SQVI這個事物代…

揭秘!寵物空氣凈化器對抗貓毛過敏,效果真的超乎想象?

貓毛過敏困擾著不少愛貓人士。盡管網絡上充斥著各種緩解策略&#xff0c;但究竟哪種方法效果最佳&#xff1f;作為一位經驗豐富的寵物主人&#xff0c;我搜集了大量信息&#xff0c;對比了幾種主流的貓毛過敏應對策略&#xff0c;比如藥物治療、日常清潔和寵物空氣凈化器的使用…

阿里云私有CA使用教程

點擊免費生成 根CA詳情 啟用根CA -----BEGIN CERTIFICATE----- MIIDpzCCAogAwIBAgISBZ2QPcfDqvfI8fqoPkOq6AoMA0GCSqGSIb3DQEBCwUA MFwxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdiZWlqaW5nMRAwDgYDVQQHDAdiZWlq aW5nMQ0wCwYDVQQKDARDU0REMQ0wCwYDVQQLDARDU0REMQswCQYDVQQDDAJDTjA…

單列集合--ArryList、LinkedList、Set

使用IDEA進入某個類之后&#xff0c;按ctrlF12,或者alt數字7&#xff0c;可查看該實現類的大綱。 package exercise;import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.function.Consumer;public class Demo3 {public static void…

開放式耳機哪個牌子好?2024年度熱門機型推薦榜單分享!

隨著音樂技術的不斷革新&#xff0c;開放式耳機已成為音樂發燒友們的首選。從最初的簡單音質&#xff0c;到如今的高清解析&#xff0c;開放式耳機不斷進化。音質純凈&#xff0c;佩戴舒適&#xff0c;無論是街頭漫步還是家中細細靜聽&#xff0c;都能帶給你身臨其境的音樂體驗…

iOS18 新變化提前了解,除了AI還有這些變化

iOS 18即將在不久的將來與廣大iPhone用戶見面&#xff0c;這次更新被普遍認為是蘋果歷史上最重要的軟件更新之一。據多方報道和泄露的消息&#xff0c;iOS 18將帶來一系列全新的功能和改進&#xff0c;包括在人工智能領域的重大突破、全新的設計元素以及增強的性能和安全性。現…

make 中 DESTDIR 和 --prefix 的區別

1.configure + make./configure --prefix=/usr make -j8make install DESTDIR=/home2.meson + ninja meson build --prefix=/usr DESTDIR=/home ninja install 這兩個示例分別展示了如何使用兩種流行的構建系統(configure + make 和 meson + ninja)來編譯和安裝軟件,并…

AI教我變得厲害的思維模式01 - 成長型思維模式

今天和AI一起思考如何培養自己的成長性思維。 一一核對&#xff0c;自己哪里里做到&#xff0c;哪里沒有做到&#xff0c;讓AI來微調訓練我自己。 成長性思維的介紹 成長性思維&#xff08;Growth Mindset&#xff09;是由斯坦福大學心理學教授卡羅爾德韋克&#xff08;Carol…

鋇錸技術BL103助力實現PLC到OPC-UA無縫轉換新高度

在工業4.0的大背景下&#xff0c;信息物理系統和工業物聯網的融合日益加深&#xff0c;推動了工業自動化向更高層次的發展。OPC UA作為一種開放、安全、跨平臺的通信協議&#xff0c;在實現不同設備、系統間數據交換和互操作性方面扮演了核心角色。鋇錸技術公司推出的BL103 PLC…

調用訊飛星火API實現圖像生成

目錄 1. 作者介紹2. 關于理論方面的知識介紹3. 關于實驗過程的介紹&#xff0c;完整實驗代碼&#xff0c;測試結果3.1 API獲取3.2 代碼解析與運行結果3.2.1 完整代碼3.2.2 運行結果 3.3 界面的編寫&#xff08;進階&#xff09; 4. 問題分析5. 參考鏈接 1. 作者介紹 劉來順&am…

Vitis HLS 學習筆記--通道的FIFO/PIPO選擇

目錄 1. 簡介 2. 代碼詳解 2.1 FIFO 通道示例 2.1.1 配置默認通道 2.1.2 kernel 代碼 2.1.3 綜合報告 2.1.4 depth 32 解析 2.1.5 FIFO 通道分類 2.2 PIPO 2.2.1 配置默認通道 2.2.2 kernel 代碼 2.2.3 綜合報告 2.2.4 PIPO 通道分類 3. 綜合對比 3.1 數據類…

docker安裝及常見命令

歷史版本docker下載 https://docs.docker.com/desktop/release-notes/#upgrades-17 docker start 容器id # 啟動容器 docker restart 容器id # 重啟容器 docker stop 容器id # 停止當前運行的容器 docker kill 容器id # 強制停止當前容器…

2024年帶你揭秘FL Studio 21破解版,2024年最新FL21內置漢化破解補丁

截止目前&#xff0c;FL Studio最新版是FL Studio 21.2.3.4004版本&#xff0c;想必很多朋友已經迫不及待了&#xff0c;那么今天這篇文章我將帶大家詳細的介紹FL Studio 21.2.3 Build 4004新特點以及如何下載&#xff0c;安裝和激活。 PS.本次為你帶來的是fl studio21破解版&a…

針對多標簽(Multi-label)任務的經典算法

前言 如果你對這篇文章感興趣&#xff0c;可以點擊「【訪客必讀 - 指引頁】一文囊括主頁內所有高質量博客」&#xff0c;查看完整博客分類與對應鏈接。 多標簽&#xff08;Multi-label&#xff09;任務是分類任務的擴展版&#xff0c;即每個樣本不再僅屬于一個類別&#xff0…

MySQL是怎么保證原子性的(undo log日志相關)

MySQL是怎么保證原子性的&#xff1f; 事務的原子性就是&#xff1a;一個事物要么全部執行成功&#xff0c;要么全部執行失敗。MySQL 主要是利用 undo log&#xff0c;也就是回滾日志來實現原子性。 平常我們在對數據進行增刪改時&#xff0c;InnoDB 除了會記錄 redo log&…

【python】Modulenotfounderror: no module named ‘open_clip’

成功解決“ModuleNotFoundError: No module named ‘open_clip’”錯誤的全面指南 在Python編程中&#xff0c;如果你遇到了“ModuleNotFoundError: No module named ‘open_clip’”這個錯誤&#xff0c;它意味著你的Python環境中沒有安裝名為open_clip的模塊&#xff0c;或者…

grep、sed、awk

grep&#xff1a;文本過濾工具 sed: 文本編輯工具 awk: 格式化文本 grep -n 顯示行號 -i 忽略大小寫 -v 取反 -o 只保留關鍵消息 # 找出文件的空行 grep ^$ test.txt -n # 找出文件非空行內容 grep ^$ test.txt -n -v # 找出文件非空行內容&#xff0c;并且排除注釋&#xff…

8個免費下載音樂的網站,建議收藏!

1、My Free MP3 tools.liumingye.cn/music/ 一個好用且免費的在線音樂播放和下載網站&#xff0c;幾乎收錄了所有國內外大火的歌手和歌曲&#xff0c;可以通過歌手列表找單曲&#xff0c;也可以直接搜索歌手或歌曲名&#xff0c;下面還有一些熱門搜索&#xff0c;可以直接播放…

頻率域,空間域以及頻率域和空間域如何獲取

文章目錄 頻率域頻率域的關鍵概念&#xff1a;頻率域的應用&#xff1a; 空間域空間域特征的含義&#xff1a;空間域操作的常見技術&#xff1a;與頻率域的對比&#xff1a; 如何獲取空間域&#xff0c;頻率域空間域特征&#xff1a;頻率域特征&#xff1a; 頻率域 頻率域&…

每天學習一個Windows命令或Linux命令——seq

今天我們來學習 seq命令&#xff01; seq命令&#xff08;單詞sequence序列的縮寫&#xff09;是Linux系統中用于輸出序列化的一串整數的命令。 一、seq用法 seq用法一共有以下三種&#xff1a; seq [選項]... 尾數 seq [選項]... 首數 尾數 seq [選項]... 首數 增量&#…