day43-测试平台搭建之前端vue学习-基础2

目录

一、数据代理

二、事件处理

三、计算属性

四、监控属性

五、绑定样式

六、今日学习思维导图


一、数据代理

        1.1.数据代理:通过一个对象代理对另外一个对象中属性的操作 (读/写)

        1.2.Vue中数据代理的好处:更加方便的操作data中的数据

        1.3.基本原理

                1).通过object.defineProperty()把data对象中所有属性添加到vm上。

                2).为每一个添加到vm上的属性,都指定一个getter/setter。

                3).在getter/setter内部去操作(读/写)data中对应的属性。

        1.4.代码

二、事件处理

        2.1.事件的基本使用

                1).使用v-on:xx或@xxx绑定事件,其中xxx是事件名;

                2).事件的回调需要配置在methods对象中,最终会在vm上;

                3).methods中配置的函数,不要用箭头函数!否则this就不是vm了;

                4).methods中配置的函数,都是被vue所管理的函数,this的指向是vm或组件实例对象

                5).@click="demo"和@click="demo($event)“效果一致,但后者可以传参;

        2.2.Vue中的事件修饰符

                1).prevent:阻止默认事件(常用);

                2).stop:阻止事件冒泡(常用);

                3).once:事件只触发一次(常用);

                4).capture:使用事件的捕获模式;

                5).self:只有event.target是当前操作的元素是才触发事件;

                6).passive:事件的默认行为立即执行,无需等待事件回调执行完毕;

        2.3.键盘事件

                1).Vue中常用的按键别名:

                        1.1).回车=>enter

                        1.2).删除=>delete(捕获“删除"和“退格"键)

                        1.3).退出=>esc

                        1.4).空格=>space

                        1.5).换行=>tab(特殊,必须配合keydown去使用)

                        1.6).上=>up

                        1.7).下=> down

                        1.8).左=>left

                        1.9).右=>right

                2).Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)

                3).系统修饰键(用法特殊):ctrl、alt、shift、meta

                        3.1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。

                        3.2).配合keydown使用:正常触发事件。

                4).也可以使用keyCode去指定具体的按键 (不推荐)

                5).Vue.config.keyCodes,自定义键名=键码,可以去定制按键别名

        2.4.代码

三、计算属性

        3.1.定义:要用的属性不存在,要通过已有属性计算得来。

        3.2.原理:底层借助了objcet.defineproperty方法提供的getter和setter。

        3.3.get函数什么时候执行?

                1).初次读取时会执行一次。

                2).当依赖的数据发生改变时会被再次调用。

        3.4.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。

        3.5.注意

                1).计算属性最终会出现在vm上,直接读取使用即可。

                2).如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变

四、监控属性

        4.1.监视

                1).当被监视的属性变化时,回调函数自动调用,进行相关操作

                2).监视的属性必须存在,才能进行监视!!

                3).监视的两种写法:

                        3.1).newVue时传入watch配置

                        3.2).通过vm.$watch监视

                4).代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>天气练习_监控属性</title><!---引入vue--><script type="text/javascript" src="../js/vue.js"></script><style></style></head><body>  <!--监视属性watch:1.当被监视的属性变化时,回调函数自动调用,进行相关操作2.监视的属性必须存在,才能进行监视!!3.监视的两种写法:(1).newVue时传入watch配置(2).通过vm.$watch监视--><!-- 准备好一个容器 -->      <div id="root"><h1>今天天气很{{info}}</h1><button @click="changeWeather">切换天气</button></div><script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示const vm = new Vue({el:'#root',data:{isHot:true,},computed:{info(){return this.isHot ? '炎热':'凉爽'}},methods: {changeWeather(){this.isHot = !this.isHot}},watch:{// isHot:{//     immediate:true,//初始化让handler调用一下//     //handler什么时候调用?当isHot发生改变时//     handler(newValue,oldValue){//         console.log('isHot被修改了',newValue,oldValue)//     }// },info:{immediate:true,//初始化让handler调用一下//handler什么时候调用?当isHot发生改变时handler(newValue,oldValue){console.log('info被修改',newValue,oldValue)}}}})vm.$watch('isHot',{immediate:true,//初始化让handler调用一下//handler什么时候调用?当isHot发生改变时handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}                })</script></body>
</html>

        4.2.深度监视

                1).Vue中的watch默认不监测对象内部值的改变(一层)。

                2).配置deep:true可以监测对象内部值改变(多层)。

                3).代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>天气练习_监控属性</title><!---引入vue--><script type="text/javascript" src="../js/vue.js"></script><style></style></head><body>  <!-- 准备好一个容器 -->      <div id="root"><h1>今天天气很{{info}}</h1><button @click="changeWeather">切换天气</button><hr/><h3>a的值是:{{number.a}}</h3><button @click="number.a++">点我让a+1</button><h3>b的值是:{{number.b}}</h3><button @click="number.b++">点我让b+1</button></div><script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示const vm = new Vue({el:'#root',data:{isHot:true,number:{a:1,b:1}},computed:{info(){return this.isHot ? '炎热':'凉爽'}},methods: {changeWeather(){this.isHot = !this.isHot}},watch:{isHot:{immediate:true,//初始化让handler调用一下//handler什么时候调用?当isHot发生改变时handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}},//监视多级结构中某个属性的变化'number.a':{handler(){console.log('a变化')}},number:{//监视多级结构中所有属性的变化deep:true,handler(){console.log('number被修改了')}}}})</script></body>
</html>

        4.3.注意

                1).Vue自身可以监测对象内部值的改变,但vue提供的watch默认不可以!

                2).使用watch时根据数据的具体结构,决定是否采用深度监视。

        4.4.omputed和watch之间的区别

                1).computed能完成的功能,watch都可以完成。

                2).watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

        4.5.两个重要的小原则

                1).所被vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象。

                2).所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm或组件实例对象。

五、绑定样式

        5.1.class样式

                1).写法:class="xxx"xxx可以是字符串、对象、数组。

                        1.1).字符串写法适用于:类名不确定,要动态获取。

                        1.2).对象写法适用于:要绑定多个样式,个数不确定,名字也不确定

                        1.3).数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。

        5.2.style样式

                1).:style="{fontSize:xxx)"其中xxx是动态值。

                2).:style="[a,b]"其中a、b是样式对象。

        5.3.代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>绑定样式</title><style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px solid red;;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg,yellow,pink,orange,yellow);}.sad{border: 4px dashed rgb(2, 197, 2);background-color: gray;}.normal{background-color: skyblue;}.Jay1{background-color: yellowgreen;}.Jay2{font-size: 30px;text-shadow:2px 2px 10px red;}.Jay3{border-radius: 20px;}</style><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 绑定样式:1. class样式写法:class="xxx" xxx可以是字符串、对象、数组。字符串写法适用于:类名不确定,要动态获取。对象写法适用于:要绑定多个样式,个数不确定,名字也不确定。数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。2. style样式:style="{fontSize: xxx}"其中xxx是动态值。:style="[a,b]"其中a、b是样式对象。--><!-- 准备好一个容器--><div id="root"><!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 --><div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br/><br/><!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 --><div class="basic" :class="classArr">{{name}}</div> <br/><br/><!-- 绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用 --><div class="basic" :class="classObj">{{name}}</div> <br/><br/><!-- 绑定style样式--对象写法 --><div class="basic" :style="styleObj">{{name}}</div> <br/><br/><!-- 绑定style样式--数组写法 --><div class="basic" :style="styleArr">{{name}}</div></div></body><script type="text/javascript">Vue.config.productionTip = falseconst vm = new Vue({el:'#root',data:{name:'1900',mood:'normal',classArr:['Jay1','Jay2','Jay3'],classObj:{Jay1:false,Jay2:false,},styleObj:{fontSize: '40px',color:'red',},styleObj2:{backgroundColor:'orange'},styleArr:[{fontSize: '40px',color:'blue',},{backgroundColor:'gray'}]},methods: {changeMood(){const arr = ['happy','sad','normal']const index = Math.floor(Math.random()*3)this.mood = arr[index]}},})</script></html>

六、今日学习思维导图


http://www.ppmy.cn/embedded/107583.html

相关文章

C++知识点总结

一、C简介 1、c的特点&#xff1a; 1、在支持C语言的基础上&#xff0c;全面支持面向对象编程 2、编程领域广泛&#xff0c;功能强大 3、C语言标准一直在保持更新 4、支持底层操作的面向对象编程语言 5、在面向对象编程语言中执行效率高 2、面向过程与面向对象的区别 面向过程是…

深度学习从入门到精通——yolov3算法介绍

YOLO v3 论文地址&#xff1a;https://pjreddie.com/media/files/papers/YOLOv3.pdf论文&#xff1a;YOLOv3: An Incremental Improvement 先验框 (1013)&#xff0c;(1630)&#xff0c;(3323)&#xff0c;(3061)&#xff0c;(6245)&#xff0c;(59 119)&#xff0c; (116 9…

Java设计模式之外观模式详细讲解和案例示范

1. 引言 在软件开发过程中&#xff0c;复杂的系统往往包含许多子系统和模块&#xff0c;随着系统功能的增加&#xff0c;模块之间的交互也变得更加复杂。这种复杂性可能会导致系统的可维护性和扩展性降低。外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式…

使用半径滤波对PointCloud进行下采样-3

关键函数 &#xff08;1&#xff09;设置点云邻域搜索的邻域半径&#xff1b;取点云一定半径内的邻域点。 setRadiusSearch() &#xff08;2&#xff09;设置点云邻域搜索之后&#xff0c;如果某点邻域点的个数小于某个值&#xff0c;那么被判断为离群点&#xff0c;则删除。…

Unity6 + UE5.4 PSO缓存实践记录

题图&#xff08;取自COD冷战的着色器编译提示&#xff09; PSO&#xff08;管线状态对象 Pipeline State Object&#xff09;是伴随现代图形API&#xff08;DirectX12、Vulkan、Metal&#xff09;而出现的概念&#xff0c;它本质上是单次绘制时渲染管线所处的状态信息的集合&…

计算机网络 第二章: 物理层_信道复用技术

文章目录 信道复用技术的基本原理常见的信道复用技术习题解答 信道复用技术的基本原理 复用&#xff08;Multiplexing&#xff09;就是在一条传输媒体上同时传输多路用户的信号。 当一条传输媒体的传输容量大于多条信道传输的总容量时&#xff0c;就可以通过复用技术&#xf…

MFC自定义消息实例

1、新建一个SHOW名称的对话框文件 2、在SHOWDlg.h中添加代码 #define WM_Display (WM_USER100)afx_msg LRESULT OnDisplay(WPARAM wParam, LPARAM lParam);3、在SHOWDlg.cpp中添加代码 BEGIN_MESSAGE_MAP(CSHOWDlg, CDialog)...ON_MESSAGE(WM_Display, OnDisplay) END_MESSA…

基于FPGA实现SD NAND FLASH的SPI协议读写

基于FPGA&#xff08;现场可编程门阵列&#xff09;实现SD NAND FLASH的SPI&#xff08;串行外设接口&#xff09;协议读写是一个涉及硬件设计与编程的复杂过程。以下将详细介绍该过程的背景、关键步骤、电路设计、SPI协议详解、FPGA实现以及代码示例等方面。 一、背景介绍 S…

MES电子看板:生产管理的实时优化工具

MES系统中的电子看板功能是一种强大的生产管理工具&#xff0c;它通过实时采集和展示生产现场的数据&#xff0c;帮助制造企业实现生产过程的可视化、实时监控和高效管理。以下是电子看板的主要功能及应用场景&#xff1a; 一、万界星空科技MES系统中电子看板的主要功能 实时数…

Harmony TextInput实现带有提示语的Text效果

在鸿蒙开发中Text组件没有设置提示语的属性&#xff0c;TextInput输入框是有的&#xff0c;那么要想实现提示语属性就需要用TextInput来实现效果。 1、调整圆角 TextInput输入框的默认效果是带有圆角效果的&#xff0c;需要通过属性设置来根据需要进行调节 TextInput().borde…

Selenium 调用 JavaScript 操作带有 readonly 属性 的日期控件

<input class"index_start" readonly"" placeholder"开始日期" size"12" autocomplete"off" type"text" value""> <input class"index_end" readonly"" placeholder"…

Day 7:栈

栈的原理 定义&#xff1a;栈是限制在一端进行插入操作和删除操作的线性表&#xff08;俗称堆栈&#xff09;。 栈顶&#xff1a;允许进行操作的一端。 空栈&#xff1a;当栈中没有元素。 栈底:另一固定端. 特点&#xff1a;后进先出。&#xff08;后面进去的元素先出去。如&am…

二叉树 - 二叉搜索树中的搜索

700. 二叉搜索树中的搜索 递归&#xff1a; /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : righ…

QT 遍历ini配置文件

在 Qt 中&#xff0c;处理 INI 配置文件是一项常见任务&#xff0c;通常使用 QSettings 类来读取和写入这些文件。QSettings 提供了一种方便的方式来操作 INI 文件中的配置数据。下面是如何使用 QSettings 遍历和处理 INI 配置文件的示例。 示例代码 假设有一个名为 config.i…

【盖世汽车-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

《绝区零》全球累积收入突破1亿美金;《原神》斩获年度最佳手游大奖 | 手游和应用出海资讯

NetMarvel帮助游戏和应用广告主洞察全球市场、获取行业信息&#xff0c;以下为9月第一周资讯&#xff1a; 《绝区零》全球累积收入突破1亿美金《原神》荣获科隆游戏展年度最佳手游大奖《无限暖暖》在App Store开启预定网易代理的《漫威终极逆转》即将登陆国服棋牌类手游《Jacka…

每天一个数据分析题(五百一十四)- 决策树算法

决策树由节点和边两种元素组成的结构&#xff0c;决策树中不包含一下哪种结点&#xff1f; A. 根结点&#xff08;root node) B. 内部结点&#xff08;internal node&#xff09; C. 外部结点&#xff08;external node&#xff09; D. 叶结点&#xff08;leaf node&#x…

应用层协议HTTP

应用层协议中的 HTTP&#xff08;超文本传输协议&#xff09;。在互联网中&#xff0c;HTTP 协议是一个至关重要的一个协议&#xff0c;它定义了客户端与服务器之间如何进行通信&#xff0c;以交换或传输超文本。 本篇介绍了有关 URL 的相关知识&#xff0c;http 的报文格式&am…

PHP一站式解决方案高级房产系统小程序源码

一站式解决方案&#xff0c;高级房产系统让房产管理更轻松 &#x1f3e0;【开篇&#xff1a;告别繁琐&#xff0c;迎接高效房产管理新时代】&#x1f3e0; 你是否还在为房产管理的繁琐流程而头疼&#xff1f;从房源录入、客户咨询到合同签订、售后服务&#xff0c;每一个环节…

el-table表头添加搜索

案例图&#xff1a; 思路&#xff1a; 添加一个插槽&#xff0c;是用popover组件展示input搜索框&#xff0c;在按下回车键时关闭popover组件且调用查询方法。 部分代码(HTML)&#xff1a; <template #header >{{item.label}}<el-popover :visible"item.visible…