Vue之路之--计算属性

打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1 minimal 编译打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1 阅读详情

先说说对官网上“计算属性”的理解:

为啥要利用计算属性?

是为了来应对复杂计算的挑战,一般情况下,对于简单的模板,因为逻辑比较简单,所以就直接用就行了,但是如果要对模板中的表达式做复杂的处理,而且要用到多个地方,如果直接写将会很复杂,而且也不利于维护,所以“计算属性”就是为了解决这个问题而生的(个人观点)

先看代码:Html部分

<div class="container" id="containBox">
		<span style="color: green">{{datas}}</span>
		<!-- 你可以像绑定普通属性一样在模板中绑定计算属性。 Vue 知道 vm.slicefun 依赖于 vm.greetings ,因此当 vm.greetings 发生改变时,所有依赖于 vm.slicefun 的绑定也会更新。 -->
		<h2 style="color: red">{{slicefun}}</h2>
		<!-- 如果不加(),那么将会导致报错,所以......,从另一方面讲,methods中定义的都是方法呢,方法只有在执行的时候才会生效 -->
		<h3>{{slicefunction()}}</h3>
		<a href="">{{date-111111111111111111111111111}}</a>
	</div>
JS部分

var vm =  new Vue({
	el:"#containBox",
	data:{
		datas:"这就是我,不一样的花朵!",
		greetings:"hello,Vuejs,it is my pleaure to meet you!"
	},
	methods:{
		slicefunction:function(){
			return this.greetings.toUpperCase()
		}
	},
	//声明了一个计算属性slicefun,
	computed:{
		slicefun:function(){
			// return this.greetings.toUpperCase()
			return this.greetings.toUpperCase()
		},
		date:function(){
			return Date.now()
		}
	}
})
"你可以像绑定普通属性一样在模板中绑定计算属性。 Vue 知道 vm.slicefun 依赖于 vm.greetings ,因此当 vm.greetings 发生改变时,所有依赖于 vm.slicefun 的绑定也会更新。"

 Vue 知道 vm.slicefun 依赖于 vm.greetings,  因为在slicefun里面有greetings,所以会有依赖;

"不同的是计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要greetings',还没有发生改变,多次访问slicefun 计算属性会立即返回之前的计算结果,而不必再次执行函数。而methods是运行一次计算一次,

关于计算属性和methods,根据官网的总结,如果你不想想用缓存,那就请用method,如果你想用缓存,那就请用计算属性

利用缓存,我们可以提高写性能,尤其是在处理大量计算的时候更是如此,利用缓存我们也许只需要计算一次,但是不利用缓存我们就需要每次都计算,这样就严重影响了前端性能;

其实,在这里,你会发现其实这个时候,这个时候的compute好像有局限性--那就是只能返回(get),不能设置(set),然而在现实的应用中,更多的是返回和设置共存的,这里也就要谈到计算属性里面的getter和setter了;

其实,compute中的getter就是用来确定计算属性的值到底是多少,而setter就是来设置的,setter的回调函数在计算属性发生改变的时候才会调用,

以下是具体的案例:

		<i>{{fullname}}</i>
		<span>{{firstname}}</span>
		<span>{{lastname}}</span>
		<br>
		<h4>{{fullname1}}</h4>
JS部分

computed:{
		slicefun:function(){
			// return this.greetings.toUpperCase()
			return this.greetings.toUpperCase()
		},
		date:function(){
			return Date.now()
		},
		fullname:{
			// setter,当fullname发生改变的时候触发
			set:function(val){
				console.log(val)
				// 在set函数中,形参代表着fullname的新值
				var names =  val.split(" ");
				this.firstname = names[0];
				this.lastname = names[names.length-1]
			},
			// getter,这里是用来确定fullname的值到底是谁的,当fullname发生改变的时候之所以{{fullname}}会发生改变,
			// 主要就是因为fullname发改变会触发set函数,导致this.firstname 和 this.lastname发生改变,所以在get函数中,
			// 就会导致name1发生改变,最终导致返回值改变,fullname也就发生了改变
			get:function(){
				//console.log(name1)
				var name1  =  this.firstname + " " + this.lastname
				return name1
			}
		},
		//在刷新的时候会正常的返回fullname,但是在改变fullname1的时候,就会报错,因为没有setter,就不知道该如何处理this.datas
		//所以当然也就返回不了datas了
		fullname1:function(){
			return this.datas;
		}
	}

Vue 通过 watch 选项提供一个更通用的方法,来响应(监控)数据的变化。

先上实例吧:

<div id="VueRooter">
		<span>{{str}}</span>
		<input type="text" name="" v-model = "str">
		<!-- 由于双向绑定,所以当输入框中的发生变化的时候就会导致num发生变化,进而触发num的监控函数changestr -->
		<br>
		<h1>{{num}}</h1>
		<input type="text" name="" v-model = "num">
		<!-- 同理 -->
		<br>
		<h2>{{obj.tel}}</h2>
		<input type="text" name="" v-model = "obj.tel">
		<!-- 同理 -->
		<br>
		<i>{{book}}</i>
		<input type="text" name="" v-model = "book">
		<!-- 同理 -->
	</div>
JS部分

var vm = new Vue({
	el:"#VueRooter",
	data:{
		str:" hello VueJS!",
		num:5,
		judge:true,
		obj:{
			tel:13578932131
		},
		book:"这是一本好书"
	},
	methods:{
		changeNum:function(){
			return this.num-3
		},
		changestr:function(val,oldVal){
			console.log(val,oldVal)
		}
	},
	/*Vue 通过 watch 选项提供一个更通用的方法,来响应(监控)数据的变化。*/
	watch:{
		// 监控str这个表达式,当其发生变化的时候执行changestr这个方法,这个方法是定义在methods里面的
		str:"changestr",
		// 监控num表达式,当其发生变化的时候执行回调函数,其中的形参val,代表变化后的值,old代表变化前的值
		num:function(val,oldval){
			var str =  "新的数字是:"+ val +"旧的数字是:"+oldval
			// return str;
			console.log(str)
		},
		// 监控对象中的表达式tel的变化,注意不能写成obj.tel,会报错的
		"obj.tel":function(val,oldVal){
			console.warn("change!")
		},
		// 监控book
		book:{
			// 是否是深度,说实话不怎么理解什么意思
			deep:true,
			// 变化的时候要做的事情,一定是handler,不能随意命名
			handler:function(val,oldval){
				console.log("我是新的"+val,"我是旧的"+oldval)
			}
		}
	}
})
//vm.str = "dadadadasdasdsada"

怎么感觉计算属性好像是对表达式(数据)的进一步加工,而watch则更偏重于监控表达式的变化



FreeRTOS系统从入门到精通万字保姆级教程 例如,在基于ARM的硬件平台上,可能需要实现针对ARM处理器的上下文切换代码,并确保FreeRTOS能够正确地响应和处理ARM架构的中断。需要注意的是,在删除任务之前应确保任务已经完成了其所有重要的工作,并且没有其他的任务依赖于它,以避免数据丢失或系统不稳定。任务的优先级设定是其中的关键环节。在复杂的系统中,可能会有大量的任务需要同时运行,而这些任务的重要性和紧急程度各不相同。这通常包括创建初始任务(这些任务将负责系统的初始化和后续任务的调度)、设置系统时钟(以确保任务的准时调度和延时功能的正确性)等。 阅读详情

相关推荐

聚类分析之——Kmeans算法(一)

原创地址:http://www.toutiao.com/i6399454239554273794/ 聚类分析是一种静态数据分析方法,常被用于数据挖掘、机器学习、模式识别等领域,聚类是一种无监督式的学习方法。它是在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法。聚类的算法有很多

june2017的博客 3531

vue---十分钟搞懂vue计算属性

计算属性本质上就是一个 function 函数,它可以实时监听 data 中数据的变化,并 return 一个计算后的新值,供组件渲染 DOM 时使用。✨个人笔记博客✨星月前端博客✨原创不易,还希望各位大佬支持一下✏️评论,你的意见是我进步的财富!......

厚积薄发. 4340

arcgis插件 批量出图 按地块批量出图工具(动态文本、动态节点坐标表)

arcgis插件 批量出图 按地块批量出图工具。

坐听风雨 7067

Vue基础之计算属性

Vue基础之计算属性

MoshMode的博客 731

SCCM实战指南:从零搭建企业级Windows自动化部署平台

本文提供了一份详细的SCCM实战指南,手把手教你从零搭建企业级Windows自动化部署平台。内容涵盖环境规划、AD架构扩展、SQL Server配置、SCCM主站点安装,以及最终实现操作系统镜像的自动化部署,旨在帮助IT管理员彻底告别手动装机,实现高效、规范的Windows设备批量管理。

weixin_29251337的博客 638

从URDF到仿真动画:基于Simulink、Simscape与S-Function的机械臂一体化建模与控制

本文详细介绍了从URDF文件到高保真仿真动画的一体化机械臂建模与控制流程。通过整合Simulink、Simscape与S-Function,构建了包含物理特性的虚拟机械臂模型,并实现了自适应滑模等高级控制算法的嵌入与验证。该流程打通了从机械设计到控制算法验证的闭环,为机器人开发提供了高效的仿真平台。

cnn8visionary的博客 698

Vue - 计算属性

1.vue计算属性-computed 一个数据, 依赖另外一些数据计算而来的结果 场景: 一个变量的值, 需要用另外变量计算而得来 语法: computed: { "计算属性名" () { return "值" } } 注意1: 计算属性和data属性都是变量-不能重名. 用法和data相同 注意2: 函数内变量变化, 会自动重新计算结果返回 例子: 需求: 需求1: 求2个数的和显示到页面上 需求2: 字符串翻转 <template> &l

小海的博客 5万+

积木报表导出数据量太大报错

‌性能问题‌:‌当数据量非常大时,‌积木报表在导出过程中可能会遇到性能瓶颈,‌导致导出过程缓慢甚至失败。‌解决这一问题的方法包括优化SQL查询、‌调整分页大小、‌使用更适合处理大量数据的库(‌如阿里巴巴的EasyExcel)‌进行导出,‌或者采用异步处理的方式来避免接口超时1。‌内存溢出‌:‌如果报表工具或其依赖的库不支持流式(‌分批)‌导出,‌大量数据的处理可能会导致内存溢出。‌数据处理方式‌:‌如果待导出的数据包含特殊字符,‌如英文双引号或等号,‌这可能导致JSON反序列化报错。

Activiti工作流 1906

vue的计算属性的使用

vue中通过computed选项定义计算属性 计算属性 类似于 methods 选项中定义的函数 计算属性 会进行缓存,只在相关响应式依赖发生改变时它们才会重新求值。 函数 每次都会执行函数体进行计算。 案例实现:输入数学与英语分数,采用 methods 与 computed 分别计算出总得分 案例源码: <body> <div id="ap...

sunshineboysy的博客 5207

YOLOv8结合GhostNet实现轻量化目标检测:模型设计与性能评测

GhostNet系列的核心是**“幽灵特征图(Ghost Feature Map)”** 概念:通过简单的线性变换(如深度卷积)生成“幽灵特征”,这些特征与原始特征融合后,能以极低的计算成本带来丰富的语义信息。为了突出GhostNet系列的必要性,设计消融实验:分别测试“仅主卷积”“仅幽灵卷积”“GhostNet(主卷积+幽灵卷积)”三种方案的性能,用数据证明“幽灵特征”的不可替代性。简单来说,引入GhostNet系列的YOLOv8,既能体现你的技术深度,又能让毕设的“落地性”大幅提升。

m0_71589036的博客 116

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。

智慧空间实验室 2884

vue-router的原理

我的另一篇博客,介绍了路由的使用https://blog.youkuaiyun.com/xiasohuai/article/details/80693320 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式,Hash模式和History模式: (1)利用URL中的hash("#"); (2)利用History interface在HTML5中新增的方法;...

xiasohuai的博客 2万+

Jetson Orin 上拉取 GMSL 相机流并保存在 DMA 内存中

本文介绍了在NVIDIA Jetson Orin平台上实现GMSL相机DMA内存共享的低延迟采集方案。通过V4L2+NvBufSurface技术,将相机数据直接存入DMA缓冲区,避免传统流程中的CPU拷贝开销。文章详细说明了设备初始化、DMA缓冲区分配、V4L2绑定等关键步骤,并展示了调用示例。该方案支持零拷贝访问,适用于AI推理、硬件编码等场景,能显著提升车载视觉系统的实时性能,为多路GMSL相机接入和低延迟处理提供了高效解决方案。

J。 695

Vuejs——计算属性

我们知道在模块中可以直接通过插值语法显示一些data中的数值。但是在某些情况,我们可能需要对数据进行一些转化后在显示,或者需要将多个数据结合起来进行显示。计算机属性是写在computed选项中。 计算机属性的基本使用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">...

just-so-so 201

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VueJs计算属性computed 原理解析

一、 什么是computed定义: 当其依赖的属性的值发生变化的时,计算属性会重新计算。反之则使用缓存中的属性值, 其设计的目的就是为了解决模板中放入太多的逻辑而导致模板过重且难以维护的...

NewTyun的博客 1414

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vuejs计算属性computed & 监听属性watch

vuejs计算属性computed & 监听属性watch

letianxf的博客 4979

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

vue依赖缓存_vuejs如何知道缓存的计算属性的依赖性?

I have this Vue.js code:new Vue({data:{myValue:'x',myOtherValue:'y'},computed: {myComputed: myFunction(){return this['my' + 'Value']}}})As you can see the computed property will be cached and it is de...

weixin_39806679的博客 177

vue依赖缓存,vuejs如何知道缓存的计算属性的依赖性?

I have this Vue.js code:new Vue({data:{myValue:'x',myOtherValue:'y'},computed: {myComputed: myFunction(){return this['my' + 'Value']}}})As you can see the computed property will be cached and it is de...

weixin_33249090的博客 98

Vuejs学习之计算属性

Vue之计算属性

linghudingding的博客 263

VueJs 计算属性

语法 computed:{ key(属性名):function(){ } } 实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> [v-cloak]{ display: none; } </

237

Vuejs计算属性和监视属性四

<body> <div class="box"> 性:<input type="text" v-model="firstName"><br> 名:<input type="text" v-model="lastName"><br> 全名:<span>{{fullName}}</span> </div> <script> let vm = new

qq_50563868的博客 193

vuejs中的计算属性和监视

计算属性 1.在computed属性对象中定义计算属性的方法,在页面上使用{{方法名}}来显示计算结果 2.通过getter/setter实现对属性数据的显示和监视 3.计算属性存在缓存,多次读取只执行一次getter 侦听属性 1.通过vm对象的$watch()或watch配置来监视指定的属性 2.当属性变化时,回调函数自动调用,在函数内部进行计算 计算属性与...

apzlm9110的博客 146

Vue|计算属性

在模板中放入太多的逻辑会让模板过重且难以维护,对于一些比较复杂和特殊的计算有可能就捉襟见肘,一文快速了解VUE的计算属性原理及实现方式提高代码可读性。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 2712

Vuejs学习笔记,Vue中方法methods 和计算属性computed的区别

方法methods 和计算属性computed的区别对比 1.从功能上看methods 和computed是一样的,那为什么还要有一个计算属性呢? 2.原因就是因为计算属性会进行缓存,如果多次使用时,计算属性只会调用一次 3.methods则会调用多次 HTML部分 <html> <head> <meta charset="utf-8"> <ti...

阿乐的博客 432

Vuejs computed set get计算属性

直接贴代码,看注释 <template> <div id="example"> <!-- 设置计算属性的绑定字段,即reversedMessage的计算属性绑定到此输入框 --> <!-- 输入框中内容变化会调用相应的getter, setter计算属性 --> <input v-model="reversedMessa...

南风不竞的专栏 3795

Vue3 计算属性

上一篇博文说了 vue3 项目的 toRefs 函数和 toRef 函数,今天就稍微总结一下 vue3 的计算属性,其实学过 vue2 的宝子们应该都清楚,计算属性这个东西在项目开发过程中使用的还是比较频繁的,使用频率相对来说比较高,所以说咱今天稍微总结一下 vue3 项目中的计算属性,下面开始。computed 表示计算属性,通常的作用是用来进行数据处理,方便在末班中简化书写。比如日常在模板中我们渲染数据的时候一般是使用 来进行展示数据,但是有的时候嘞,获取到的数据并不是我们想要的类型,我们可以在

“跟他人学,和自己比” 1万+
上一篇: Vuejs之路之--过滤器的那些事
下一篇: Vuejs之路之--style和class的绑定
初心鸿鹄
博客等级 码龄10年 14粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值