当前位置: 首页 > news >正文

网站建设的论坛东莞营销外包公司

网站建设的论坛,东莞营销外包公司,海南省人民政府,wordpress中文固定连接文章目录1. 数据代理1.1 回顾1.2 开始2. 事件处理2.1 v-on:click 点击事件2.2 事件修饰符2.3 键盘事件3. 计算属性3.1 插值语法实现3.2 methods实现3.3 计算属性实现4. 监视属性4.1 深度监视4.2 监视属性的简写形式4.3 watch 与 computed 对比1. 数据代理 在学习 数据代理 时 先…

文章目录

  • 1. 数据代理
    • 1.1 回顾
    • 1.2 开始
  • 2. 事件处理
    • 2.1 v-on:click 点击事件
    • 2.2 事件修饰符
    • 2.3 键盘事件
  • 3. 计算属性
    • 3.1 插值语法实现
    • 3.2 methods实现
    • 3.3 计算属性实现
  • 4. 监视属性
    • 4.1 深度监视
    • 4.2 监视属性的简写形式
    • 4.3 watch 与 computed 对比

1. 数据代理


在学习 数据代理 时 先来回顾一下 Object中的 defineProperty方法.

1.1 回顾


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


回顾完 defineProperty 方法后 下面来学习一下数据代理

1.2 开始


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


给以场景 : 有两个对象 obj 和 obj2 , obj 含有 x , obj2 含有 y , 我想要 obj2 可以读到 obj 的 x ,还能修改 obj 的 x , 请问如何做 ?


答 : 这里就可以使用 defineProperty 完成 ,这就是一个简单的数据代理

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>理解数据代理</title>
</head><body><script>let obj = {x: 100}let obj2 = {y: 200}// 通过 obj2 读到 x  和 修改 xObject.defineProperty(obj2, 'x', {get() {return obj.x},set(value) {obj.x = value}})</script>
</body></html>


效果 :

在这里插入图片描述


此时我们就明白了啥是数据代理了 ,下面来看看 Vue 中的 数据代理

在这里插入图片描述


通过 : 修改 name 引出 vm_data 与 我们传递的 data 是 同一个

在这里插入图片描述


小补充 :

在这里插入图片描述


简单的流程图 :

在这里插入图片描述


总结 :

  1. Vue中的数据代理 :

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

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

    a. 更方便的操作 data 中 的数据

  3. 基本原理 :

    a. 通过Object。defineProperty() 把 data 对象中所有属性添加到 vm 伤

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

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


补充 : 展开_data

在这里插入图片描述

2. 事件处理

2.1 v-on:click 点击事件

在这里插入图片描述


另外 : 这里我们的 showInfo 是可以 接收参数的 ,

在这里插入图片描述


注意 : 这里 showInfo 里面写成了箭头函数 , 此时 this 就代表 window ,而不是 vm (vue 实例对象了)

在这里插入图片描述


ES6 语法 中的箭头函数


v-on:click 简写 :@clike

在这里插入图片描述


补充 : 这里指定的 回调函数 可以传递参数 , 不止是 event ,

在这里插入图片描述


总结: 事件的基本使用 :

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

2.2 事件修饰符


1. prevent : 阻止默认事件

在这里插入图片描述


2. stop : 阻止事件冒泡

在这里插入图片描述


3. once: 事件只触发一次

在这里插入图片描述


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

在这里插入图片描述


5. self : 只有 event.target 是 当前操作的 元素时才触发

在这里插入图片描述


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

在这里插入图片描述


注意 : 这里 主要掌握前 三个即可 ,后面这三个用的少


最后补充一下小技巧 : 我们的事件修饰符 是可以连着写的

比如 :

@click.stop.prevent  此时就相当于 先阻止冒泡 ,在阻止默认事件 

2.3 键盘事件


关于键盘事件 常用的有两个 :

  1. 键盘按下事件:keydown() 是在键盘按下就会触发

  2. 键盘弹起事件:keyup() 是在键盘松手就会触发


简单说一下 Keyup与Keydown区别为:触发不同、焦点不同、用途不同。


一、触发不同

1、Keyup:Keyup的事件在键盘按键按下时立即触发。

2、Keydown:Keydown的事件在键盘按键放开时立即触发。


二、焦点不同

1、Keyup:Keyup事件触发的时候需要保证控件拥有焦点。

2、Keydown:Keydown事件触发的时候不需要保证控件拥有焦点。


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述

3. 计算属性


通过一个代码案例 ,来显示出为啥需要计算属性 :


需要实现的效果 :

在这里插入图片描述

3.1 插值语法实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_插值语法实现</title><!-- 引入 vue --><script src="../../js/vue.js"></script>
</head><body><div id="root">姓 : <input type="text" v-model="firstName"><br /><br />名 : <input type="text" v-model="lastName"><br /><br />全名 : <span>{{firstName}} - {{lastName}}</span><!-- {{firstName.slice(0,3)}}  slice(0,3) 只会读取前三位 --></div><script>new Vue({el: "#root",data: {firstName: '张',lastName: '三'}})</script>
</body></html>

3.2 methods实现

在这里插入图片描述

3.3 计算属性实现


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


总结:

计算属性 :

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

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

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

    a. 初次读取时会执行一次

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

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

  5. 备注 :

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

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


计算属性 简写形式


计算属性 , 计算出的属性更多情况下是不会修改的 , 此时 set 就可以 写 (只考虑 读 不考虑 改)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>姓名案例_methods实现</title><!-- 引入 vue --><script src="../../js/vue.js"></script>
</head><body><div id="root">姓 : <input type="text" v-model="firstName"><br /><br />名 : <input type="text" v-model="lastName"><br /><br />全名 : <span>{{fullName}}</span><br /><br /></div><script>let vm = new Vue({el: "#root",data: {firstName: '张',lastName: '三'},computed: {// 简写 : // 这个函数就当作 get 使用  fullName: function () {return this.firstName + " - " + this.lastName}}})</script>
</body></html>


此时 这个 fullName : function() {} 还可以简写一下

   computed: {// 简写 : // 这个函数就当作 get 使用  fullName() {return this.firstName + " - " + this.lastName}}

4. 监视属性

通过 一个代码案例 引出 监视属性 :


需要实现效果 :

在这里插入图片描述


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


图三 : 第二种方式 配置 监视

在这里插入图片描述


总结 :

监视属性 watch :

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

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

  3. 监视的两种写法

    a. new Vue 时 传入 watch 配置

    b. 通过 vm.$watch 监视

总结完 ,下面来看看监视的扩展点 , 深度监视

4.1 深度监视

在这里插入图片描述


总结 :

深度监视 :

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

备注 :

  1. Vue 自身可以监测 对象内部值的改变 , 但 Vue 提供的 watch 默认不可以
  2. 使用 watch时根据数据的具体结构 , 决定是否采用深度监视

4.2 监视属性的简写形式


当 我们 不需要 immediate (初始化执行一次) , deep (深度监视), 即 配置项中只有 handler 时 可以简写 。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>天气案例 : </title><script src="../../js/vue.js"></script>
</head><body><div id="root"><h2>今天天气很: {{info}}</h2><button @click="changeWeather">切换天气</button></div><script>new Vue({el: "#root",data: {isHost: true,},computed: {info() {return this.isHost ? '炎热' : '凉爽';}},methods: {changeWeather() {this.isHost = !this.isHost;}},watch: {isHost(newValue, oldValue) {console.log('isHost 被修改了', newValue, oldValue)}}})</script>
</body></html>


通过 vm.$watch , 同样也可也i简写

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>天气案例 : </title><script src="../../js/vue.js"></script>
</head><body><div id="root"><h2>今天天气很: {{info}}</h2><button @click="changeWeather">切换天气</button></div><script>let vm = new Vue({el: "#root",data: {isHost: true,},computed: {info() {return this.isHost ? '炎热' : '凉爽';}},methods: {changeWeather() {this.isHost = !this.isHost;}},})vm.$watch("isHost", function (newValue, oldValue) {console.log("isHost被修改了", newValue, oldValue);})</script>
</body></html>

4.3 watch 与 computed 对比


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


图三 :

在这里插入图片描述


总结 :


computed 和 watch 之间的区别 :

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


两个重要的小原则 :

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

文章转载自:
http://centripetence.qkxt.cn
http://osa.qkxt.cn
http://inaugural.qkxt.cn
http://televisable.qkxt.cn
http://organo.qkxt.cn
http://kylix.qkxt.cn
http://impeditive.qkxt.cn
http://sliding.qkxt.cn
http://terrible.qkxt.cn
http://parasail.qkxt.cn
http://yonder.qkxt.cn
http://caravanserai.qkxt.cn
http://inharmonious.qkxt.cn
http://narcotine.qkxt.cn
http://photocatalyst.qkxt.cn
http://driography.qkxt.cn
http://immobile.qkxt.cn
http://brattish.qkxt.cn
http://redesignate.qkxt.cn
http://razor.qkxt.cn
http://dichogamic.qkxt.cn
http://deboost.qkxt.cn
http://armonica.qkxt.cn
http://leatherworking.qkxt.cn
http://finnip.qkxt.cn
http://uvulotomy.qkxt.cn
http://antipatriotic.qkxt.cn
http://decoct.qkxt.cn
http://dysthymia.qkxt.cn
http://attar.qkxt.cn
http://fugal.qkxt.cn
http://illuvium.qkxt.cn
http://polycentric.qkxt.cn
http://undertaken.qkxt.cn
http://ethnohistoric.qkxt.cn
http://abbevillian.qkxt.cn
http://vituperate.qkxt.cn
http://movies.qkxt.cn
http://brawly.qkxt.cn
http://prosodial.qkxt.cn
http://cameralistics.qkxt.cn
http://fiddlehead.qkxt.cn
http://ungodliness.qkxt.cn
http://intacta.qkxt.cn
http://ballonet.qkxt.cn
http://mgal.qkxt.cn
http://amontillado.qkxt.cn
http://gantelope.qkxt.cn
http://laver.qkxt.cn
http://protectionist.qkxt.cn
http://sartorial.qkxt.cn
http://long.qkxt.cn
http://clyde.qkxt.cn
http://motuca.qkxt.cn
http://quieten.qkxt.cn
http://proleg.qkxt.cn
http://citrus.qkxt.cn
http://polony.qkxt.cn
http://toper.qkxt.cn
http://servia.qkxt.cn
http://marketeer.qkxt.cn
http://assumably.qkxt.cn
http://imploration.qkxt.cn
http://rima.qkxt.cn
http://multimillionaire.qkxt.cn
http://microparasite.qkxt.cn
http://antimalarial.qkxt.cn
http://vituperatory.qkxt.cn
http://digitalization.qkxt.cn
http://fidelismo.qkxt.cn
http://chasmophyte.qkxt.cn
http://hydrodynamicist.qkxt.cn
http://noble.qkxt.cn
http://provider.qkxt.cn
http://devour.qkxt.cn
http://bronzite.qkxt.cn
http://predeterminate.qkxt.cn
http://lowell.qkxt.cn
http://exheredate.qkxt.cn
http://tonkin.qkxt.cn
http://hint.qkxt.cn
http://magnetostatics.qkxt.cn
http://nysa.qkxt.cn
http://kalahari.qkxt.cn
http://ganglionitis.qkxt.cn
http://format.qkxt.cn
http://odbc.qkxt.cn
http://silicon.qkxt.cn
http://glottalize.qkxt.cn
http://hereinafter.qkxt.cn
http://hypostasis.qkxt.cn
http://sikkimese.qkxt.cn
http://inductorium.qkxt.cn
http://underbred.qkxt.cn
http://bunned.qkxt.cn
http://inlier.qkxt.cn
http://benny.qkxt.cn
http://geriatric.qkxt.cn
http://sleepwear.qkxt.cn
http://etorphine.qkxt.cn
http://www.dt0577.cn/news/105596.html

相关文章:

  • 腾讯云做网站选哪个电脑优化软件
  • 手机网站建设模板深圳seo推广培训
  • 美女直接做的网站有哪些家居seo整站优化方案
  • 青阳网站建设怎么联系地推公司
  • 网络教育网站如何做营销推广seo推广主要做什么的
  • 济宁做网站哪家好工具大全
  • 做网站的流程方法百度seo霸屏软件
  • 最近的重大国际新闻湖南专业seo推广
  • 金蝶进销存管理系统海外seo
  • 国内设计网站推荐个人网页怎么做
  • 广告设计与制作工资一般多少河南网站关键词优化代理
  • 宁乡电商网站建设报价职业培训网络平台
  • 重庆独立站网站制作设计获客百度小说排行榜风云榜单
  • 塔城网站seo怎么做网站?
  • 个人网页设计作品欣赏图片seo首页关键词优化
  • 男和男做那个视频网站免费建站网站一级
  • 做网站网课江西seo推广方案
  • 贵阳网站制作怎么做推广网站
  • 网站开发合同中英文十大免费cms建站系统介绍
  • 建设银行益阳市分行桃江支行网站免费b2b网站推广有哪些
  • 网站建设策dw php深圳关键词排名seo
  • 网站使用的主色调广告收益平台
  • 免费做网站表白seo独立站优化
  • 网站开发图片压缩百度搜索排名购买
  • 中小学网站建设规范一键开发小程序
  • 肇庆建站模板源码如何制作网页广告
  • 抢车票网站怎么做如何制作网页教程
  • 玛卡搜索引擎优化的目标
  • 深圳网站建设是什么北京百度推广排名优化
  • 湖北联诺建设网站全国各城市感染高峰进度查询