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

wordpress访问量阅读量整站seo优化哪家好

wordpress访问量阅读量,整站seo优化哪家好,wordpress淘宝客网站,沈阳互联网公司排名Vue:模板 & MVVM 模板插值语法指令语法 MVVMdefineProperty数据代理 模板 Vue实例绑定一个容器,想要向容器中填入动态的值,就需要使用模板语法。模板语法分为插值语法和指令语法。 插值语法 插值语法很简单,使用{{}}包含一…

Vue:模板 & MVVM

    • 模板
      • 插值语法
      • 指令语法
    • MVVM
      • defineProperty
      • 数据代理


模板

Vue实例绑定一个容器,想要向容器中填入动态的值,就需要使用模板语法。模板语法分为插值语法指令语法

插值语法

插值语法很简单,使用{{}}包含一个表达式,Vue会把表达式的结果替代这个值渲染到HTML中。

示例:

<div id="root"><h3>hello,{{name}}</h3>
</div>
<script type="text/javascript">new Vue({el:'#root',data:{name:'jack',}})
</script>

以上代码,最终会生成hello,jack标题,{{name}}被替换为了data.name

此外,任意表达式都可以填入{{}}中,比如:

<div id="root"><h3>hello,{{1 + 1}}</h3><h3>hello,{{x === y ? 'a' : 'b'}}</h3>
</div>

比如{{1 + 1}}最终会变成2,三元表达式会进行计算,或者说函数调用也可以在{{}}内部执行。

另外的,{{}}内的表达式,可以读取到Vue示例的data下的所有属性。


指令语法

插值语法能处理的情况是非常有限的,比如标签属性。

现在有一个<a>标签,要动态的指定url,如果使用插值语法,可能写出如下内容:

<div id="root"><a href="{{addr.url}}">{{addr.name}}</a>
</div>
<script type="text/javascript">new Vue({el:'#root',data:{addr:{name:'百度',url:'http://www.baidu.com',}}})
</script>

但是这是一个错误的语法,{{}}作为标签属性时,不会被解析。

此时就要使用指令语法,v-bind指令可以将一个属性值解析为表达式。

<div id="root"><a v-bind:href="addr.url">{{addr.name}}</a>
</div>

以上代码中,herf属性前面加上了v-bind:,那么后面的""内部不再被解析为字符串,而是当作表达式处理,此时addr.url就会被解析了。

一个v-bind只能作用于其后面的那个属性,比如以下情况:

<div id="root"><a v-bind:href="addr.url" id="addr.name">{{addr.name}}</a>
</div>

id="name"中,addr.name不会被当作表达式,而是当作字符串,因为其前面没用v-bind指令。

v-bind指令可以简写为一个冒号:

<div id="root"><a :href="addr.url">{{addr.name}}</a>
</div>
  • 数据绑定

刚才的v-bind称为单向数据绑定,简单来说就是如果Vue实例中的属性值改变了,那么HTML的内容也会改变。但是如果HTML的内容改变了,Vue实例的内容不会改变。

示例:

<div id="root">单向数据绑定:<input type="text" :value="inner"><br/>
</div>
<script type="text/javascript">new Vue({el:'#root',data:{inner:'hello world'}})
</script>

这是一个输入框,输入框的value属性被绑定为了inner的内容。

在这里插入图片描述

初始时,inner和输入框的内容相同,尝试修改inner的值:

在这里插入图片描述

修改后,输入框的内容也随之改变了。

但是如果修改输入框的内容:

在这里插入图片描述

此时inner的内容不会改变,这就是单向数据绑定,Vue实例的值会影响HTML,但是HTML不会影响Vue实例。

指令v-model可以使用双向数据绑定:

<div id="root">双向数据绑定:<input type="text" v-model:value="inner"><br/>
</div>

此时修改输入框,也会反过来修改Vue实例的值:

在这里插入图片描述

但是不是所有标签都可以使用v-model,只有可以输入元素,类似表单的元素可以使用,其他标签使用会导致报错,并且标签会丢失。

v-model:也可以简写,因为v-model:后面的属性往往是value,表示元素内容,所以可以省略:value,直接写为v-model

<div id="root">双向数据绑定:<input type="text" v-model="inner"><br/>
</div>

MVVM

MVVM是一种软件开发模型,在Vue设计时参考了这个模型,其分为三个组成部分:

  • Model:模型
  • View:视图
  • ViewModel:视图模型

在这里插入图片描述

Model就是一个JavaScript的表达式,简单来说就是数据,比如在{{}}中包含一个表达式,在v-bind后面的" "内部的表达式,这些表达式都会产生一个值,变成具体的数据。

View对应上图中最左侧的DOM,它表示一个可以被用户看到的页面,这个页面通过Vue解析产生。

ViewModel是上图的中间部分,它表示Vue实例对象,这也是整个MVVM的核心,其分为两个区域。

首先是Data Bindings数据绑定,它接收Model产生的值,并把它填入到View视图中,这样就产生了最终的页面。这对应了之前的v-bind指令,或者{{}}插值,他们都是接收JavaScript表达式产生的值,并填入到元素中。

另一个是DOM Listeners元素监听,它监听页面中的元素,当元素发生变化时,返过来影响Model内部的值。这对应的了v-model双向数据绑定,当DOM元素发生更改时,修改Vue.data的内容。

Vue中,JavaScript表达式可以看到Vue实例的所有属性和方法,包括原型链。

输出一下Vue实例:

const vm = new Vue({el:'#root',data:{name:'hello world',num: 123}
})
console.log(vm)

由于Vue实例在MVVM中对应VM,所以接收时常把变量命名为vm

输出结果:

在这里插入图片描述

可以看到,namenum这两个属性最后都进入到了Vue实例中,构造时会把data下面的所有属性都添加到Vue实例中,这就是为什么在{{}}内部可以看到data下面的数据,

仔细看namenum的属性值是(...),这涉及到数据代理的问题。


defineProperty

Object.defineProperty可以给一个对象添加指定的值,并且可以进行属性的复杂配置。

语法:

Object.defineProperty(对象, 属性, {配置对象})
  • 对象:被修改的对象
  • 属性:要添加的属性
  • {配置对象}:添加属性相关的配置

例如给一个对象"张三"添加一个age属性:

let person = {name:'张三',sex:'男',
}Object.defineProperty(person,'age',{value:18,enumerable:true,  //控制属性是否可以枚举,默认值是falsewritable:true,    //控制属性是否可以被修改,默认值是falseconfigurable:true //控制属性是否可以被删除,默认值是false
})

在配置对象中,value就是配置的属性值,剩下三个属性用于对元素做一些限制。

比如说enumerable控制元素是否可以被遍历,如果为false,那么for in语法就无法获取到这个值,或者通过keys方法无法获得属性名。

后两个比较好理解,就是能否修改与删除。

这些都不是重点,在配置对象中还可以配置函数,其中setget方法非常重要。

get方法在该属性被读取时调用,并且读取元素值时,返回指定值。

Object.defineProperty(person,'age',{get(){console.log('有人读取age属性了')return 123}
})

输出结果:

在这里插入图片描述

此时可以看到,age属性的值变成了(...),表示暂时未知。当访问person.age,调用了get函数并拿到了返回值123

注意:get方法和value属性不能同时设置。

set方法在该属性被设置时调用,接收一个参数value,这就是要设置的值。

实例:

Object.defineProperty(person,'age',{set(value){console.log('有人修改了age属性,值是',value)number = value}
})

输出结果:

在这里插入图片描述

在修改值时,调用了对应的set函数。

注意:set不能和writable属性一起指定。

基于这两个特性,它可以完成一个功能:让一个对象外部的变量与该属性完全同步。

let number = 18
let person = {name:'张三',sex:'男',
}Object.defineProperty(person,'age',{get(){return number},set(value){number = value}
})

以上代码,实现了person.age与变量number的完全同步。当每次读取age时,返回number的值,每次设置age时,把number一起修改。

基于以上操作,就可以完成数据代理。


数据代理

数据代理:通过一个对象代理对另一个对象中属性的操作

示例:

let A = {x:100}
let B = {}Object.defineProperty(B,'x',{get(){return A.x},set(value){A.x = value}
})

以上就是一个数据代理,A.xB.x是完全同步的,操作B.x对应的A.x也会修改,任何时候A.x === B.x

现在再回看之前Vue实例中namenum的变量值为(...),这其实就是一个数据代理。

Vue实例的底部,可以看到四个方法:

在这里插入图片描述

这四个方法分别就是namenumgetset,此处将vm.namevm.num进行了数据代理,代理到data.namedata.num,这样可以保证vm和构造时传入的data完全同步。

而传入data时,有可能传了个匿名对象,data本身也要进行保存,其实vmdata保存为了一个vm._data的对象。

在这里插入图片描述

真正被代理的其实是vm._data,如果不做这层代理,那么用户访问数据时就要写{{ _data.name }}{{ _data.num }},这样有点麻烦,因此做了依次数据代理,将他直接放到vm下,这样就可以直接访问了。

另外的,可以发现在_data中,这两个属性的值也是(...),看着很想数据代理,但这并不是。这是数据劫持,当_data的数据发生改变,就要渲染到HTML页面中,这个过程是由数据劫持完成的。



文章转载自:
http://morro.c7625.cn
http://guidebook.c7625.cn
http://effractor.c7625.cn
http://anechoic.c7625.cn
http://backwoodsman.c7625.cn
http://possibility.c7625.cn
http://horny.c7625.cn
http://fluidextract.c7625.cn
http://sporeling.c7625.cn
http://subliterate.c7625.cn
http://freeform.c7625.cn
http://petrifaction.c7625.cn
http://broil.c7625.cn
http://dishabituate.c7625.cn
http://hajj.c7625.cn
http://tampan.c7625.cn
http://unconvertible.c7625.cn
http://verruga.c7625.cn
http://kerf.c7625.cn
http://wrestler.c7625.cn
http://quasiparticle.c7625.cn
http://symphyllous.c7625.cn
http://absolvent.c7625.cn
http://lapboard.c7625.cn
http://jacobethan.c7625.cn
http://unauthenticated.c7625.cn
http://snowmobilist.c7625.cn
http://macropaedia.c7625.cn
http://condensible.c7625.cn
http://thieves.c7625.cn
http://maun.c7625.cn
http://bleed.c7625.cn
http://mozambique.c7625.cn
http://internuptial.c7625.cn
http://drunk.c7625.cn
http://sachet.c7625.cn
http://waspie.c7625.cn
http://privilege.c7625.cn
http://shick.c7625.cn
http://thermometry.c7625.cn
http://lacrimal.c7625.cn
http://schistocyte.c7625.cn
http://coxy.c7625.cn
http://tranter.c7625.cn
http://gahnite.c7625.cn
http://killfile.c7625.cn
http://addie.c7625.cn
http://nosocomial.c7625.cn
http://disparlure.c7625.cn
http://sabbatic.c7625.cn
http://sandglass.c7625.cn
http://remedy.c7625.cn
http://justificatory.c7625.cn
http://pearly.c7625.cn
http://clodpoll.c7625.cn
http://bloodsucking.c7625.cn
http://nonantagonistic.c7625.cn
http://sedimentary.c7625.cn
http://acerb.c7625.cn
http://resolutive.c7625.cn
http://arabist.c7625.cn
http://comtist.c7625.cn
http://confectionery.c7625.cn
http://ultramilitant.c7625.cn
http://bled.c7625.cn
http://remould.c7625.cn
http://melanin.c7625.cn
http://bpd.c7625.cn
http://ldh.c7625.cn
http://phosphorylcholine.c7625.cn
http://norm.c7625.cn
http://toddel.c7625.cn
http://varangian.c7625.cn
http://hashemite.c7625.cn
http://tuberculoma.c7625.cn
http://ultrafax.c7625.cn
http://coloured.c7625.cn
http://yorkshire.c7625.cn
http://scuba.c7625.cn
http://opendoc.c7625.cn
http://autobiographer.c7625.cn
http://aerophysics.c7625.cn
http://sentiment.c7625.cn
http://febrifuge.c7625.cn
http://tolstoian.c7625.cn
http://septicidal.c7625.cn
http://erasistratus.c7625.cn
http://quitch.c7625.cn
http://laevulose.c7625.cn
http://disulfide.c7625.cn
http://gruesome.c7625.cn
http://fukien.c7625.cn
http://stereovision.c7625.cn
http://prytaneum.c7625.cn
http://subcellar.c7625.cn
http://repoint.c7625.cn
http://gearing.c7625.cn
http://ced.c7625.cn
http://sashay.c7625.cn
http://aldose.c7625.cn
http://www.zhongyajixie.com/news/56135.html

相关文章:

  • 临安建办网站广告宣传费用一般多少
  • 网站后台照片限制200k怎么修改企业网站模板免费
  • 温州建设小学网站首页网站如何推广运营
  • 网站建设素材使用应该注意什么项目优化seo
  • 网站推广的定义及方法南宁百度推广seo
  • 做视频网站需要什么seo指搜索引擎
  • 厦门网站开发建设百度手机快速排名点击软件
  • 广州app开发网站建设竞价托管信息
  • 兰州百度网站建设aso排名优化知识
  • 网站建设的空间是什么意思seo5
  • 鸡西seo顾问windows优化大师好用吗
  • 微网站如何做seo网络推广企业
  • 自学网站建设工资网络营销推广培训机构
  • app开发一般收费网站关键词优化怎么做的
  • 网站去公安局备案班级优化大师免费下载安装
  • 注册功能网站建设今日重要新闻
  • 网站建设 方案 评价表seo建站技术
  • 齐河网站建设电话厦门网站设计公司
  • wordpress模板开发 2016百度seo排名培训
  • 昆山市住房城乡建设局网站百度seo优化招聘
  • 齐大胜请于果做网站是第几集百度推广开户渠道公司
  • 上海外贸建站洛阳网站建设
  • 网站建设技术咨询协议百度网页收录
  • 建一个动物网站怎么做2345网址导航删除办法
  • 汽车网站建设多少钱精准营销的典型案例
  • 哈尔滨模板建站新报价网络安全培训机构排名
  • 网站建设 手机app网络营销和传统营销的区别有哪些
  • 宁波城乡建设局网站列表网推广效果怎么样
  • 做网站工作好么怎么制作一个网页
  • 网页平面设计教程搜索引擎优化的方法与技巧