计算属性的优势

计算属性的作用是计算复杂的逻辑,并返回一个结果,提供给模板多次使用;只要依赖的响应式数据没有改变,计算属性就不会重新执行,而是直接返回它存储的缓存。所以,节省不必要的开销。

模板语法的模板取值可以在里面进行运算,但是终究不适合做过于复杂的运算,模板取值就应该做它本质的工作:

<div>{{ simpleValue }}</div>
<div>{{ simpleValue - 10 * 100 + 100 }}</div>

像下面这样复杂的逻辑计算,而页面当中又多次使用的就一定要使用计算属性。格式化 JSON 字符串的代码:

function formatJson(json) {
json = json.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = "number";
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = "key";
} else {
cls = "string";
}
} else if (/true|false/.test(match)) {
cls = "boolean";
} else if (/null/.test(match)) {
cls = "null";
}
return '<span class="' + cls + '">' + match + "</span>";
});
}

使用计算属性

import json from "./data.json";

const jsonData = ref(JSON.stringify(json, null, 2));
const formattedJson = computed(() => {
console.log("computed!");
formatJson(jsonData.value);
});

v-html使用三次formattedJson计算属性计算的结果:

<div v-html="formattedJson"></div>
<div v-html="formattedJson"></div>
<div v-html="formattedJson"></div>

最终控制台结只打印了一次,在没有改变响应式数据jsonData,计算属性就不会重新执行内部代码:

比较普通函数

普通的函数也能替代计算属性做的事情,唯一的区别就是,普通函数每在模板里面使用一次就计算一次代码,这可能加大开销,降低性能,它不可以缓存。

<div v-html="formatJson(jsonData)"></div>
<div v-html="formatJson(jsonData)"></div>
<div v-html="formatJson(jsonData)"></div>

控制台打印了三次,说明普通函数被调用三次:

总结

在逻辑复杂,页面上多次使用的代码,考虑使用计算属性。计算属性能够保存第一次计算的缓存,除非依赖的响应式数据发生了改变,不管调用多少次都返回上一次的缓存结果。计算属性能够减少我们的开销,提升性能。而普通的函数就完全不具备这些特点。

推荐下一篇文章:Vue 监听器和计算属性到底有什么不同?

Vue 计算属性与普通的函数有什么区别?的更多相关文章

  1. 七、vue计算属性

    细节流程图 初始化 计算属性的初始化是发生在 Vue 实例初始化阶段的 initState 函数中,执行了 if (opts.computed) initComputed(vm, opts.compu ...

  2. vue教程2-03 vue计算属性的使用 computed

    vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...

  3. 温故vue对vue计算属性computed的分析

    vue 复习笔记(1)一段时间没有看过vue的官方文档了,温故而知新,所以我决定将vue的文档在看一遍 1计算属性computed在vue的computed中声明的是计算属性,可以使用箭头函数来进行定 ...

  4. vue 计算属性 实例选项 生命周期

    vue 计算属性: computed:{} 写在new vue()的属性,只要参与运算,数据不发生变化时,次计算只会执行一次,结果缓存,之后的计算会直接从缓存里去结果.如果其中的值发生变化(不管几个) ...

  5. vue——计算属性和侦听器

    一.计算属性(data中的相关数据) 侦听多个属性时——计算属性 comuted. 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: & ...

  6. Vue计算属性缓存(computed) vs 方法

    Vue计算属性缓存(computed) vs 方法 实例 <div id="example"> <p>Original message: "{{ ...

  7. 15 Vue计算属性和侦听器

    计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的. 在模板中放入太多的逻辑会让模板过重且难以维护.例如: split = 字符中间空格分割, reverse= 反转 join('' ...

  8. Vue 计算属性 && 监视属性

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 & ...

  9. 回顾Vue计算属性VS其他语法有感

    回顾Vue计算属性VS其他语法有感 重新回顾官方教程中的到计算属性和侦听器,发觉获益良多,主要就是两点: 计算属性和其他语法的比较 计算属性.侦听属性.方法.模板变量的使用 计算属性和其他语法的比较 ...

  10. Vue计算属性

    github地址:https://github.com/lily1010/vue_learn/tree/master/lesson06 一 计算属性定位 当一些数据需要根据其它数据变化时,这时候就需要 ...

随机推荐

  1. 秒级查询之开源分布式SQL查询引擎Presto实操-上

    @ 目录 概述 定义 概念 架构 优缺点 连接器 部署 集群安装 常用配置说明 资源管理安装模式 安装命令行界面 基于Tableau Web 连接器 使用优化 数据存储 查询SQL优化 无缝替换Hiv ...

  2. Go适合做什么?为何这么多人偏爱Go语言?

    Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着 ...

  3. 深入理解 Python 的对象拷贝和内存布局

    深入理解 Python 的对象拷贝和内存布局 前言 在本篇文章当中主要给大家介绍 python 当中的拷贝问题,话不多说我们直接看代码,你知道下面一些程序片段的输出结果吗? a = [1, 2, 3, ...

  4. 树形 dp 与树上问题

    NFLS 集训笔记 20220802 - 树形 dp 进阶与树上问题综合 \(\text{By DaiRuiChen007}\) I. 洛谷[P2585] - 三色二叉树 \(\text{Link}\ ...

  5. 前端Linux部署命令与流程记录

    以前写过一篇在Linux上从零开始部署前后端分离的Vue+Spring boot项目,但那时候是部署自己的个人项目,磕磕绊绊地把问题解决了,后来在公司有了几次应用到实际生产环境的经验,发现还有很多可以 ...

  6. mysql中的列类型

    创建数据表的时候,指定的列可以存储的数据类型: CREATE TABLE book ( bid  列类型); ① 数值类型--可以不加引号 TINYINT 微整型,占一个字节  范围-128~127 ...

  7. angular2-qrcode 引用报错 error NG8001: 'qr-code' is not a known element:

    error NG8001: 'qr-code' is not a known element: 解决方案 假如你的组件模块叫做a-demo.module,你的组件叫做print.component.t ...

  8. Keil 5(C51 与 MDK-ARM)官网下载安装包 [ 图文教程 ]

    前言 本篇我将介绍 Keil C51 和 MDK-ARM 两大集成开发环境的安装包下载方法,帮助大家安全快速的从官网下载安装包. 博主编写了软件安装教程,可以在安装包下载完成后,跳转观看图文教程进行软 ...

  9. Odoo View 常用技巧

    隐藏Field <field name="currency_id" invisible="True"/> <field name=" ...

  10. Python读取大量Excel文件并跨文件批量计算平均值

      本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法.   首先,让我们来看一下具体需求:目前有一个文件夹,其中存放了大量Excel文件:文件名称是每一位同学的 ...