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

旅行志 wordpressseo优化方法网站快速排名推广渠道

旅行志 wordpress,seo优化方法网站快速排名推广渠道,咖啡网页设计代码,自己做网站 微信一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据)#xff0c;在元数据的基础上进行逻辑运算后得到的新的数据#xff0c;计算属性要依赖于源数据#xff0c;源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选…一、计算属性 1、计算属性的概念 计算属性是依赖于源数据(data或者属性中的数据)在元数据的基础上进行逻辑运算后得到的新的数据计算属性要依赖于源数据源数据数据变化计算属性也会变化 2、计算属性的语法 在vue2中使用computed这个选项完成计算属性的 templatedivh2购物车/h2tabletheadtrtd编号/tdtd商品/tdtd数量/tdtd价格/tdtd小计/td/tr/theadtbodytr v-foritem in filterShopcartList :keyitem.idtd{{item.id}}/tdtd{{item.name}}/tdtdbutton clickitem.num---/button{{item.num}}button clickitem.num/button/tdtd{{item.price}}/tdtd{{(item.price*item.num).toFixed(2)}}/td/tr/tbodytfoottrtd colspan5总价{{getTotalPrice}}/td/tr/tfoot/table/div /template ​ script export default {data(){return{shopcartList:[{id:1001,name:红富士苹果,price:3.69,num:1},{id:1002,name:威化饼干,price:1.69,num:1},{id:1003,name:康师傅方便面,price:5.21,num:1}]}},computed:{filterShopcartList:{//get方法是为了完成获取计算值后的属性get(){return this.shopcartList.filter(itemitem.num0)}},getTotalPrice:{get(){return this.filterShopcartList.reduce((prve,cur)prvecur.price*cur.num,0).toFixed(2)}}} } /script ​ styletable{border-collapse: collapse;}td{border:1px solid #999;padding: 10px;} /style 2、计算属性的简写形式 1计算属性的标准写法很少用需要更改原数据时才用 computed:{计算属性名称{get{return 新的结果}}} 2计算属性的简单写法常用 computed:{计算属性名称{return 新的结果}} templatedivh2购物车/h2tabletheadtrtd编号/tdtd商品/tdtd数量/tdtd价格/tdtd小计/td/tr/theadtbodytr v-foritem in filterShopcartList :keyitem.idtd{{item.id}}/tdtd{{item.name}}/tdtdbutton clickitem.num---/button{{item.num}}button clickitem.num/button/tdtd{{item.price}}/tdtd{{(item.price*item.num).toFixed(2)}}/td/tr/tbodytfoottrtd colspan5总价{{getTotalPrice}}/td/tr/tfoot/table/div /template ​ script export default {data(){return{shopcartList:[{id:1001,name:红富士苹果,price:3.69,num:1},{id:1002,name:威化饼干,price:1.69,num:1},{id:1003,name:康师傅方便面,price:5.21,num:1}]}},computed:{filterShopcartList:{//get方法是为了完成获取计算值后的属性get(){return this.shopcartList.filter(itemitem.num0)}},getTotalPrice:{get(){return this.filterShopcartList.reduce((prve,cur)prvecur.price*cur.num,0).toFixed(2)}}} } /script ​ styletable{border-collapse: collapse;}td{border:1px solid #999;padding: 10px;} /style 3、计算属性的缓存特性 计算属性具有缓存作用在原数据不改变的情况下计算属性多次调用只有第一次进行计算后续都是从缓存中获取数据如果源数据变化之后计算属性就会重新进行计算。 4、setter和getter方法 templatedivdivfirstName:span{{firstName}}/span/divdivmiddleName:span{{middleName}}/span/divdivlastName:span{{lastName}}/span/divdivfullName:span{{name}}/span/divbutton clicknamezhang san fengchangeFullName/button/div /template ​ script export default {data(){return{firstName:zhai,middleName:ji,lastName:zhe}},computed:{name:{get(){return this.firstName this.middleName this.lastName},set(val){//计算属性是不能改的console.log(val,val);this.firstNameval.split( )[0]this.middleNameval.split( )[1]this.lastNameval.split( )[2]}}} } /script ​ style langscssdiv{span{color: blue;}} /style 三、侦听器 1、侦听器的概念 在vue中当我们对data的数据或者计算属性进行变化的时候专门一个选项可以随时监听data或者计算属性的变化从而完成相应的逻辑 2、监听器的语法 监听器的语法有两种形式 简写写法 watch:{//newval:变化之后的数据//oldval:变化之前的数据监视的数据名(newval,oldval){ ​} } 案例监视计数器num的变化 export default {data(){return{num:0}},watch:{num(newval,oldval){console.log(newval,oldval);}} } 监听器的标准写法 语法 watch:{监听的数据名:{//监听的逻辑处理方法handler(newval,oldval){ ​},//是否深度监听deep:true|false,//是否立即监听immediate:true|false}} 案例使用标准写法完成计数器的监听 export default {data(){return{num:0}},watch:{num:{handler(newval,oldval){console.log(newval,oldval);}}} } 3、监听对象中属性变化 如果要监听对象中属性的变化可以有两种方式 第1种方式通过对象名.属性名的方式 templatedivdiv{{obj.a}} button clickobj.aa/button/divdiv{{obj.b}} button clickobj.ba/button/divdiv{{obj.c}} button clickobj.ca/button/div/div /template ​ script /* watch:{对象名.属性名(newval,oldval){}} */ export default {data(){return{obj:{a:10,b:20,c:30}}},watch:{obj.a(newval,oldval){console.log(obj.a,newval,oldval);},obj.b(newval,oldval){console.log(obj.b,newval,oldval);},obj.c(newval,oldval){console.log(obj.c,newval,oldval);}} } /script 如上这种方式如果属性过多它就太麻烦了 方式2通过深度监听的方式来完成对对象的监听 export default {data(){return{obj:{a:10,b:20,c:30}}},computed:{//新定义一个计算属性newObj,该计算属性的作用是将data对象中的obj做一个深拷贝newObj(){//这种深拷贝对于如果一个对象中有函数获知时间类型是无法进行深拷贝//JSON.stringify将JSON格式字符串对象转换为js对象(属性名没有双引号)//JSON.parse将JSON字符串转为对象return JSON.parse(JSON.stringify(this.obj))}},watch:{//obj:要监听的对象newObj:{//执行监听的具体钩子函数handler(newval,oldval){console.log(newval,oldval);},//开启深度监听deep:true}} } 4、立即监听设置 通过对watch中 immediate设置为true就会开启立即监听 watch:{//obj:要监听的对象newObj:{//执行监听的具体钩子函数handler(newval,oldval){console.log(newval,oldval);},//开启深度监听deep:true,//开启立即监听immediate:true}} 四、过滤器 1、什么是过滤器 vue中定义过滤器主要用于文本格式化具体可以完成如下功能 日期的格式化 货币格式化 小数点精确度的截取 大小写首字母转换等 注意vue2中过滤器vue3中将过滤去掉了 2、过滤器的分类 按照作用范围可以将过滤器分成两大类 全局过滤器针对项目中所有组件都有用 私有过滤器局部过滤器只针对当前组件有效 2.1、定义私有私有过滤器 定义私有过滤器 export default{data(){},methods{},//filters:配置对象filters:{过滤器的名称(参数){}} } 如何调用过滤器 使用过滤器的时候可以在两种情况下使用第1种情况在插值表达式中使用第2种在属性中使用 在插值表达式中使用 {{message|过滤器的2名称|过滤器2的名称}} message代表是输出数据对象|这个竖杠表示的就是一个管道符使用这个符号将插值表达式和过滤器连接在一起 使用v-bind在属性中使用 div v-bind:idid的变量|过滤器的名称/div 案例通过身份证获取格式化出生日期 templatedivdiv身份证号:{{idcard}}/divdiv生日:{{idcard|birthday}}/div/div /templatescript export default {data(){return{idcard:610122198404084030}},filters:{birthday(val){return val.slice(6,10)-val.slice(10,12)-val.slice(12,14)}} } /script 2.2、定义全局过滤器 定义全局过滤器的语法 Vue.filter(过滤器的名称,function(val){ return result}) 定义全局过滤器的步骤 在src下创建一个filters的文件夹 在src/filters文件夹下定义过滤器的js文件 //首先先导入Vue import Vue from vue Vue.filter(capitalize,function(val){return val.charAt(0).toUpperCase()val.slice(1) }) 在main.js中导入定义全局过滤器 import Vue from vue import App from ./App.vue import ./filters/capitalize //在此处导入Vue.config.productionTip false new Vue({render: h h(App), }).$mount(#app) 在组件中可以使用|的方式来调用过滤器 五、自定义指令 之前我们已经接触过指令在但是我们接触这些指令都是vue提供的内置指令每一种指令有着不同的用途如果开发者要想自定义指令就可以使用自定义指令完成不同功能的封装 1、自定义指令的分类 全局自定义指令可以作用域全局所有的组件 私有自定义指令只能作用域该组件 1私有自定义指令的语法 templatedivh2 v-mycolorcolor clickcolor#0000ffHello Giles/h2!-- h1 v-mycolorcolor#ff0000Hello Giles/h1h1 v-mycolorcolor#00ff00Hello Giles/h1 --/div /templatescript export default {data(){return{color:orange}},directives:{mycolor:{/*当我们将指令绑定到标签的时候会调用一次在此方法中完成初始化功能el:所绑定指令(自定义指令)所在的DOM元素bindings:自定义指令的配置对象modifiers:指令的修饰符name:指令的名称(不含v-和修饰符的)rawName:指令的全名(v-的前缀和修饰符)value:指定的所传递的值vNode:更新之后的虚拟DOM节点对象oldVnode:更新之前的虚拟DOM节点*/bind(el,bindings,vNode,oldVnode){console.log(bindings,bindings.value);el.style.colorbindings.value},componentUpdated(el,bindings,vNode,oldVnode){console.log(vNode,vNode);console.log(oldVnode,oldVnode);el.style.colorbindings.valueel.innerHTMLHello Woniuxy}}} } /scriptstyle/style 2全局自定义指令的定义步骤 步骤 在src目录下创建directives文件夹然后在文件夹下创建自定义指令 import Vue from vue Vue.directive(ellipses,{bind(el,bindings){let w;if(bindings.value){wbindings.value.width}else{w100px}el.style.widthwel.style.whiteSpacenowrapel.style.textOverflowellipsisel.style.overflowhidden} }) 在main.js中引入自定义指令 import Vue from vue import App from ./App.vue import ./directives/ellipses Vue.config.productionTip false new Vue({render: h h(App), }).$mount(#app) 在组件中应用 div v-ellipses白日依山尽黄河入海流欲穷千里目,更上一层楼/divdiv v-ellipses{width:150px}白日依山尽黄河入海流欲穷千里目,更上一层楼/divdiv v-ellipses{width:200px}白日依山尽黄河入海流欲穷千里目,更上一层楼/div 2、自定义指令的案例 1完成水印功能 import Vue from vue Vue.directive(waterMarker,{bind(el,bindings){let canvsdocument.createElement(canvas)//设置画布的大小canvs.width250canvs.height150//获取画笔的上下文对象let cxtcanvs.getContext(2d)cxt.rotate((20*Math.PI)/180)cxt.fillStylebindings.value.colorcxt.font48px 宋体cxt.fillText(bindings.value.content,canvs.width/10,canvs.height/2)el.appendChild(canvs)} }) 2完成画板功能 import Vue from vue /*Vue.directive是用于定义全局指令的参数有两个参数1自定义指令名称参数2自定义指令的配置对象 */ Vue.directive(draw,{bind(el,bindings){console.log(bindings.value);//创建Canvas对象let cvsdocument.createElement(canvas)//给画布设置宽和高cvs.widthbindings.value.widthcvs.heightbindings.value.height//获取上下文对象let cxtcvs.getContext(2d)//给画笔绑定onmousedowncvs.onmousedownfunction(e){//获取鼠标点下去的坐标cxt.moveTo(e.pageX-this.offsetLeft,e.pageY-this.offsetTop)//当鼠标移动时候cvs.onmousemovefunction(e){cxt.lineTo(e.pageX-this.offsetLeft,e.pageY-this.offsetTop)cxt.stroke()}cvs.onmouseupfunction(){cvs.onmousemovenull}}el.appendChild(cvs)} })
http://www.hkea.cn/news/14340444/

相关文章:

  • 惠州做网站小程序淮北论坛官网app
  • 婚恋网站建设的目的如何利用视频网站做数字营销推广
  • 北京微信网站制作费用外包公司做网站
  • 杭州建设网 工程信息网站做网站是不是要模板
  • 整站seo排名公司上海网站建设小程序开发
  • 成都网站建设思乐科技公司花20亿做网站
  • 中国肩章成都有实力的seo团队
  • 孝感网站开发培训机构北京百度糯米团购有做网站的电话吗
  • 北京模板建站哪家好佛山国内快速建站
  • 济南专业网站优化大型行业门户网站开发建设方案
  • 专注与开发网站的北京网络公司wordpress 升级超时
  • 智能网站推广优化做外贸网站企业
  • 做电影网站解析怎样做境外电商
  • 选择佛山网站设计wordpress 4.4.1漏洞
  • 网站建设流程域名申请域名注册价格
  • 建设外贸型网站做网站为什么需要购买域名
  • 专做商业平台网站东莞英文建站公司
  • 青岛电子商务网站建设十个免费软件不收费
  • 网站空间的分类网站开发建设赚钱吗
  • 定制化网站开发公司英文电商网站建设
  • 网站平台是怎么做财务的建设网站需要懂什么
  • 南宁网站推广手段杭州余杭区网站建设
  • 东莞网站建设 烤活鱼建立网站链接结构的基本方式是
  • 苏州h5建站排名优化软件点击
  • xunsearch做搜索网站wordpress怎么收录
  • 做it的网站互联网技术的应用
  • 资阳市住房和城乡建设局网站离石市网站建设公司
  • 眉山招聘网站建设国家高新技术企业图片
  • 软件开发与网站开发wordpress 后门检查
  • 网站建设与维护的选择题editplus怎么创网站