前端应用开发实验:组件应用

目录

  • 实验目的
  • 相关知识点
  • 实验内容及要求
    • 代码实现
    • 效果

实验目的

(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.mzph.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;包括在人工智能领域的重大突破、全新的设计元素以及增强的性能和安全性。现…

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 数据类…

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…

【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;可以直接播放…

Windows下SVN文件损坏,启动服务报错1067

之前碰到过一次&#xff0c;忘记最后怎么解决的了&#xff0c;只记得大概原理和原因&#xff0c;以及解决办法。 1067错误码&#xff0c;很多地方都会碰到&#xff0c;mysql也会有&#xff0c;看来应该是windows系统的错误码。跟具体程序无关。所以直接百度“SVN”、“1067”…

HarmonyOS App开发造轮子--自定义圆形图片

思路&#xff1a; 1、对比之前自己在其他程序开发中自定义组件的思路&#xff0c;首先寻找父组件Image和Component相关的Api&#xff0c;看看是否具备OnDraw方法。 2、了解Canvas相关Api操作&#xff0c;特别是涉及到位图的操作。 通过翻阅大量资料&#xff0c;发现了两个关…

不是,有了这套IP地址管理开源系统谁还用Excel啊

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 中午好&#xff0c;我的网工朋友。 作为网工的我们想必都很清楚IP地址管理的重要性以及其复杂性&#xff0c;传统的Excel表格虽然在某些情况下能…

基于STM32开发的智能农业灌溉控制系统

目录 引言环境准备智能农业灌溉控制系统基础代码实现&#xff1a;实现智能农业灌溉控制系统 4.1 土壤湿度传感器数据读取4.2 水泵控制4.3 环境监测与数据记录4.4 用户界面与多功能显示应用场景&#xff1a;农业灌溉与环境监测问题解决方案与优化收尾与总结 1. 引言 随着农业…

html写一个table表

HTML代码&#xff1a; <div class"table_box w-full"><div class"title_top">XX表</div><div class"title_btm">(<input class"input input_1" type"text">xxxx)</div><table class…

【Linux】内存级文件

目录 C语言关于文件操作的函数 Linux关于文件操作的系统调用 完善myshell C语言缓冲区 其实我们在C语言就学过文件操作&#xff0c;但是从语言的角度&#xff0c;我们只是说会用了关于文件的一些操作和函数&#xff0c;但其实它究竟是怎么回事我们其实并不明白&#xff0c;…