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

class 3: vue.js 3 计算属性

  • 计算属性是一种Options API,Options API是一种通过对象定义属性、方法等框架API的方式
  • 我们知道,在模板中可以直接通过插值语法显示一些data属性中的数据。但是在某些情况下,可能需要对数据进行一些转化操作之后再显示,或者需要将多个数据结合起来进行显示
  • 如果我们需要对多个data数据进行运算或由三元运算符来决定结果,或者对数据进行某种转化,然后显示结果。在模板中直接使用表达式,可以很方便的实现这些功能。但如果在模板中放入太多的逻辑,会让模板过重和难以维护;如果多个地方都使用相同逻辑,会有大量重复代码,不利于代码的复用,因此,应该尽可能将模板中的逻辑抽离出去。这样有两种解决办法,第一种是将逻辑抽取到方法中,放到methods的选项中,但是这样的话,所有data中数据的使用过程都变成了一个方法的调用,所以比较好的解决方法就是使用计算属性(computed)

下面是一个多种方案实现同一个需求的具体案例,可以比较一下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app"></div><template id="my-app">
<!--        模板语法--><h3>模板语法</h3><h4>{{ firstName + " " + lastName }}</h4><h4>{{ score >= 60 ? '及格' : '不及格' }}</h4><h4>{{ message.split(" ").reverse().join(" ") }}</h4>-------------<!--        methods--><h3>methods</h3><h4>{{ getFullName() }}</h4><h4>{{ getResult() }}</h4><h4>{{ getReverseMessage() }}</h4>-------------
<!--        计算属性--><h3>计算属性</h3><h4>{{ fullName }}</h4><h4>{{ result }}</h4><h4>{{ reverseMessage }}</h4></template><script src="./js/vue.js"></script><script>const App = {template: '#my-app',data() {return {firstName: "clarence",lastName: "Liu",score: 90,message: "Hello World"}},methods: {getFullName() {return this.firstName + this.lastName},getResult() {return this.score >= 60 ? '及格' : '不及格'},getReverseMessage() {return this.message.split(" ").reverse().join(" ")}},computed: {fullName() {return this.firstName + this.lastName},result() {return this.score >= 60 ? '及格' : '不及格'},reverseMessage() {return this.message.split(" ").reverse().join(" ")}}}Vue.createApp(App).mount('#app')</script>
</body>
</html>
  • 计算属性会基于它的依赖关系对计算结果进行缓存;当计算属性依赖的数据不变化时,就无须重新计算,但是一旦发生变化,计算属性依然会重新进行计算,下面是一个methods和computed针对这一点进行对比的例子
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app"></div><template id="my-app"><h3>methods</h3><h4>{{ getFullName() }}</h4><h4>{{ getFullName() }}</h4><h4>{{ getFullName() }}</h4>-------------
<!--        计算属性--><h3>计算属性</h3><h4>{{ fullName }}</h4><h4>{{ fullName }}</h4><h4>{{ fullName }}</h4></template><script src="./js/vue.js"></script><script>const App = {template: '#my-app',data() {return {firstName: "clarence",lastName: "Liu",}},methods: {getFullName() {newName = this.firstName + this.lastNameconsole.log('methods:' + newName)return newName}},computed: {fullName() {newName = this.firstName + this.lastNameconsole.log('computed:' + newName)return newName}}}Vue.createApp(App).mount('#app')</script>
</body>
</html>

在这里插入图片描述

  • 可以看到控制台中methods运行了三次,而computed的函数只运行了一次,这说明了计算属性会对计算结果进行缓存这一性质

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java中的注解(Annotation)
  • MySQL入门学习-MySQL的连接查询
  • switch语句和while循环
  • 算法练习题07:无重复字符的最长子串
  • 临时性解决斐讯K3 路由器端口转发限制
  • GO Date数据处理
  • CSS-定位【看这一篇就够了】
  • 食堂线上预约点餐系统小程序的设计
  • 使用 FormCreate 渲染 Element Plus 表单
  • k8s1.23 部署Prometheus-Operator集群监控
  • 贪心算法---用最少数量的箭引爆气球
  • 【计算机网络】应用层HTTP协议
  • 数据赋能(193)——开发:数据服务——实施过程、应用特点
  • 142.环形链表二-力扣
  • Day 7:条件编译
  • [译]Python中的类属性与实例属性的区别
  • Asm.js的简单介绍
  • ES学习笔记(12)--Symbol
  • learning koa2.x
  • Linux gpio口使用方法
  • PHP的类修饰符与访问修饰符
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • python_bomb----数据类型总结
  • Python学习之路16-使用API
  • vagrant 添加本地 box 安装 laravel homestead
  • win10下安装mysql5.7
  • 大主子表关联的性能优化方法
  • 数据仓库的几种建模方法
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 数论-逆元
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #vue3 实现前端下载excel文件模板功能
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (04)odoo视图操作
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (全注解开发)学习Spring-MVC的第三天
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)u-boot-nand.bin的下载
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • 、写入Shellcode到注册表上线
  • .NET Core WebAPI中封装Swagger配置
  • .net framework profiles /.net framework 配置
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 读取 JSON格式的数据
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 的字符串暂存池
  • .net6+aspose.words导出word并转pdf
  • .Net面试题4
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [Android Studio 权威教程]断点调试和高级调试