Vue笔记 2

数据代理

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

let obj={x:100} 
let obj2={y:200}
Object.defineProperty(obj2,'x',{get(){return obj.x},set(value){obj.x = value}
})

Vue中的数据代理

  1. Vue中的数据代理:

    通过vm对象来代理data对象中属性的操作(读/写)

  2. Vue中数据代理的好处:

    更加方便的操作data中的数据

  3. .基本原理:

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

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

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

事件的基本使用

  1. 使用v-on:xxx或@xxx绑定事件,其中xxx是事件名;
  2. 事件的回调需要配置在methods对象,最终会在vm上;
  3. methods中配置的函数,不要用箭头函数!否则this就不是vm了;
  4. methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象;
  5. @click="demo"和@click="demo($event)”效果一致,但后者可以传参;
    在这里插入图片描述

事件修饰符

Vue中的事件修饰符:

  1. prevent:阻止默认事件(常用);
  2. stop:阻止事件冒泡(常用);
  3. once:事件只触发一次(常用);
  4. capture:使用事件的捕获模式;
  5. self:只有event.target是当前操作的元素时才触发事件;
  6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕;

在这里插入图片描述

Vue键盘事件

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

    回车=>enter

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

    退出=>esc 空格=>space

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

    上=>up

    下=>down

    左 =>left

    右 =>right

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

在这里插入图片描述

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

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

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

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

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

计算属性 computed

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

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

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

    (1).初次读取时会执行一次。
    (2).当依赖的数据发生改变时会被再次调用

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

  5. 备注:

    (1).计算属性最终会出现在vm上,直接读取使用即可。
    (2).如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变

在这里插入图片描述

简写(在不使用set的情况下):

在这里插入图片描述

监视属性watch

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

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

  3. 监视的两种写法

    (1).new Vue时传入watch配置

    两种写法:

    watch:{//正常写法isHot:{// immediate:true, //初始化时让handler调用一下// deep:true,//深度监视handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}}, //简写isHot(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue,this)} }
    

    (2).通过vm.$watch监视

    两种写法:

	//正常写法vm.$watch('isHot',{immediate:true, //初始化时让handler调用一下deep:true,//深度监视handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}}) //简写vm.$watch('isHot',(newValue,oldValue)=>{console.log('isHot被修改了',newValue,oldValue,this)}) 

深度监视

  1. Vue中的watch默认不监测对象内部值的改变(一层)。
  2. 配置deep:true可以监测对象内部值改变(多层)。

备注:

  1. Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以!
  2. 使用watch时根据数据的具体结构,决定是否采用深度监视。
watch:{isHot:{// immediate:true, //初始化时让handler调用一下//handler什么时候调用?当isHot发生改变时。handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}},//监视多级结构中某个属性的变化/* 'numbers.a':{handler(){console.log('a被改变了')}} *///监视多级结构中所有属性的变化numbers:{deep:true,handler(){console.log('numbers改变了')}}}

computed和watch之间的区别

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

两个重要的小原则:

  1. 所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。
  2. 所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,
  3. 这样this的指向才是vm 或 组件实例对象。
watch:{firstName(val){setTimeout(()=>{console.log(this)this.fullName = val + '-' + this.lastName},1000);},lastName(val){this.fullName = this.firstName + '-' + val}}

绑定样式

1. class样式

写法:

class=“xxx” xxx可以是字符串、对象、数组。

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

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

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

<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 /></div>

2. style样式

写法:

​ :style="{fontSize: xxx}"其中xxx是动态值。

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

<div id="root"><!-- 绑定style样式--对象写法 --><div class="basic" :style="styleObj">{{name}}</div> <br /><br /><!-- 绑定style样式--数组写法 --><div class="basic" :style="styleArr">{{name}}</div></div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL学习笔记(三)

1、insert插入多条数据 语法&#xff1a;insert into t_user(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...; 2、快速创建表 原理&#xff1a;将一个查询结果当做一张表创建&#xff0c;可以完成表的快速复制。表创建出来&#xff0c;同时表中的数据…

【计算机毕业设计】——农产品销售系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

✔ ★Java项目——设计一个消息队列(二)

Java项目——设计一个消息队列 四. 项⽬创建五. 创建核⼼类创建 Exchange&#xff08;名字、类型、持久化&#xff09;创建 MSGQueue&#xff08;名字、持久化、独占标识&#xff09;创建 Binding&#xff08;交换机名字、队列名字、bindingKey用于与routingKey匹配&#xff09…

LLMs之ToolAlpaca:ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略

LLMs之ToolAlpaca&#xff1a;ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略 目录 ToolAlpaca的简介 0、《ToolAlpaca: Generalized Tool Learning for Language Models with 3000 Simulated Cases》翻译与解读 1、数据集列表 2…

基于arcgis /envi PCA(主成分分析)实现过程

基于arcgis /envi PCA(主成分分析)实现过程 1 提取研究范围 2对研究范围进行重采样 &#xff08;根据数据情况进行选做&#xff0c;如数据较大建议进行该步骤操作&#xff09; 3 对研究范围内数据进行归一化处理 4 将空值替换为0 5 对同期不同要素数据进行波段合成 对波段…

Yii2 路由美化访问需要加s

不得不说yii真是反人类&#xff0c;怪不得现在都不维护了&#xff0c;今天解析下路由美化下的路由访问问题。 设置main.php配置文件 urlManager > [enablePrettyUrl > true, // 启用 URL美化showScriptName > false, // 隐藏入口文件index.phpenableStrictParsing…

MySql数据库从0-1学习-第三天多表设计学习

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)多对多一对一 一对多 需求:根据需求,完成部门和员工表的设计 一对多,很多人会使用外键,…

如何分析 Java 开源项目源码?

准备深入分析一个 Java 开源项目的源码时&#xff0c;可以通过下面这些步骤和技巧&#xff0c;更系统地理解和分析项目源代码&#xff1a; 1. 确定分析目标和范围&#xff1a; 在开始分析之前&#xff0c;明确你的目标&#xff0c;确定你要深入了解的功能或模块。这有助于你有…

零基础转行网络安全,高薪梦想可以实现吗?

零基础转行网络安全&#xff0c;学会网络安全相关知识&#xff0c;可以从事以下岗位&#xff1a; 1、安全运维&#xff1a; 负责服务器及终端设备的维护 负责业务的安全风险评估和漏洞挖掘 负责安全事件的检查和实施 2、渗透测试 负责渗透测试、风险评估工作的实施 提供…

《web应用技术》第三次课后练习

实验目的&#xff1a; 1、springboot入门程序撰写并启动 2、使用postman练习参数的获取。 参考&#xff1a;Day04-10. Web入门-SpringBootWeb-快速入门_哔哩哔哩_bilibili

【星期计算】蓝桥杯

–> 因为这里是结果填空题&#xff0c;我们直接暴力用java自带的BigInteger类。 /*** 试题 A: 星期计算** 本题总分&#xff1a;5 分* 【问题描述】* 已知今天是星期六&#xff0c;请问20的22次方天后是星期几&#xff1f;* 注意用数字 1 到 7 表示星期一到星期日。* * 【答…

2024年在阿里云申请SSL证书多少钱?免费版不要钱,付费版352元/年

SSL证书是实现网站https访问必须购买的云安全类产品&#xff0c;以阿里云为代表的各大云服务商也都提供申请SSL证书服务&#xff0c;2024年阿里云既提供免费版的SSL证书&#xff0c;也有付费版的&#xff0c;最低只要352元/年。 一、阿里云申请免费版SSL证书申请流程&#xff…

中国平安金融壹账通交付管理中心总经理崔羽先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 中国平安金融壹账通交付管理中心总经理崔羽先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“项目管理成与败&#xff0c;人才是第一要素”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要…

任推邦七款热门拉新项目,普通人逆袭路径,月入6个W!

任推邦 不扣量的项目拉新平台 1UC网盘 —网推 价格上涨行业置顶 &#xff0c;大厂项目 市场空白&#xff0c;预算充足&#xff0c;不限量 适合自媒体/抖快等渠道 上传下载不限速 2迅雷网盘—网推 官方核心服务商&#xff0c;大厂项目 群组内测&#xff08;新增转播收…

【生产实习-毕设】pyspark学生成绩分析与预测(上)

注意&#xff1a;数据由实习单位老师提供&#xff08;需要自行搜索下载&#xff09;&#xff0c;页面美化为下载模板。 项目介绍&#xff1a;前端页面输入影响成绩的属性&#xff0c;预测出成绩&#xff0c;并作可视化展示——属性对成绩的影响。使用python pyspark 进行数据预…

【Linux 学习】进程优先级和命令行参数!

1. 什么是优先级? 指定进程获取某种资源&#xff08;CPU&#xff09;的先后顺序&#xff1b; Linux 中优先级数字越小&#xff0c;优先级越高&#xff1b; 1.1 优先级和权限的区别&#xff1f; 权限 &#xff1a; 能不能做 优先级&#xff1a; 已经能了&#xff0c;但是获…

选择自动化工具是一个关键的决策过程

好的自动化软件测试工具&#xff0c;不仅可以有效的缩短全生命周期的交付周期&#xff0c;还可以提高测试的有效性&#xff0c;还可以保证更好的高质量的交付。工具的选型是一项重要的决策过程&#xff0c;工具的采用涉及到企业的效率、成本和长期发展。 1、需求分析 确组织希…

AI大模型探索之路-应用篇10:Langchain框架-架构核心洞察

目录 前言 一、LangChain设计目标 二、LangChain设计之道 三、LangChain典型应用 1、简单的问答Q&A over SQL CSV: 2、聊天机器人Chatbots: 3、总结摘要Summarization: 4、网页爬虫Web scraping: 5、本地知识库&#xff08;Q&A with RAG): 三、LangChain架构…

(React Hooks)前端八股文修炼Day9

一 对 React Hook 的理解&#xff0c;它的实现原理是什么 React Hooks是React 16.8版本中引入的一个特性&#xff0c;它允许你在不编写类组件的情况下&#xff0c;使用state以及其他的React特性。Hooks的出现主要是为了解决类组件的一些问题&#xff0c;如复杂组件难以理解、难…

用于深度调试的 GPT:AI 如何改变代码质量

GPT-4革命&#xff1a;未来编程必备的AI调试专家 介绍 人工智能在编程中的概述&#xff1a;人工智能 (AI) 在编程中的集成彻底改变了开发人员编码和解决问题的方式。 GPT 等人工智能工具在软件开发的各个阶段&#xff08;包括调试&#xff09;提供前所未有的帮助。 GPT在调试中…