vue 计算属性 vs 方法, 过滤器

2023-11-16

vue 计算属性 vs 方法, 过滤器

最近换项目了,终于重新开始 使用 vue 了 , 继续学习中

computed

计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。

变量处理的任何复杂逻辑,你都应当使用计算属性

非常重要: 仅依赖变化才会更新数据

computed 属性是不能通过 this.property 来修改的,赋值的化(无setter)会报错, 修改的话不生效

Vue 过滤器

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

组件的 update 都会导致过滤器的执行, 就像下面的 method中的方法一样

Vue 计算属性 vs 方法

官方: 我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是 计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。 这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

如果你不希望有缓存,请用方法来替代。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>reactive</title>
  <style>
    [v-cloak] {
      display: none;
    }
  </style>
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
  <!-- <script src="../babel.min.js"></script> -->
</head>
<body>
  <div id="app">
    <input type="text" v-model="initialValue">
    <br>
    <span v-cloak>{{ value }}</span>
    <br>
    <span v-cloak>{{formatValue()}}</span>
    <br>
    <span v-cloak>{{ init }}</span>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script type="text/babel">
    // 计算属性 vs 方法
    const app = new Vue({
      el: '#app',
      data: {
        initialValue: '好吃',
        init: 'value changed'
      },
      methods: {
        formatValue() {
          console.log('方法执行了');
          return this.initialValue.split('').reverse().join('');
          // return Date.now();
        }
      },
      beforeUpdate(){
        console.log('beforeUpdated');
      },
      updated(){
        console.log('updated');
      },
      computed: {
        value() {
          return this.initialValue.split('').reverse().join('');
          // return Date.now();
        }
      }
    });
  </script>
</body>
</html>

我们可以通过 input(view) 影响 model 或者通过 model 去影响 view 来验证,且看控制台打印

  1. 在浏览器中, 输入 文字的时候(组建 update), 在控制台中 可以看见 methods 方法一直在执行
  2. 在控制台中 通过 app.init = 123 赋值(组件 update)的时候, methods 中对应 方法也会执行

总结如下: 当 viewModel 检测数据或视图变化并进行更新操作的时候, methods 中对应的方法就会执行

两个方法可以达到同样的目的,就是开销问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 计算属性 vs 方法, 过滤器 的相关文章

  • Git、GitHub和Gitee的使用

    Git GitHub和Gitee之间的关系 1 Git 是一个开源的分布式版本控制系统 简单来说就是可以通过使用git去管理项目 我们可以将项目存放在一个仓库中 通过git去管理这个仓库 以此来达到管理项目的目的 2 GitHub是一个基于
  • 剑指Offer 62 -- 圆圈中最后剩下的数字

    剑指Offer 62 圆圈中最后剩下的数字 题目 0 1 n 1这n个数字排成一个圆圈 从数字0开始 每次从这个圆圈里删除第m个数字 删除后从下一个数字开始计数 求出这个圆圈里剩下的最后一个数字 例如 0 1 2 3 4这5个数字组成一个圆

随机推荐

  • Python语言基础—if判断和循环总结

    系列文章目录 Python语言基础 注释的作用及分类 Python语言基础 常用运算符总结 Python语言基础 定义变量与数据类型 Python语言基础 if判断和循环总结 Python语言基础 理解面向对象 Python语言基础 集合的
  • 新专辑《AI秘籍》,你所感兴趣的一切

    Hi 大家好 我时茶桁 最近 我花了几天时间仔细思考了一下即将要开始写的专栏 AI秘籍 再根据自己的能力大概规划了一下 目前大致已经理出了一些相关信息可以分享给大家 专栏形式 本次专栏应该会以文章的形式先和大家见面 后续还会根据能力以原本的
  • 十四、使用Selector(多路复用器)实现Netty中Reactor单线程模型

    导论 前面几篇文章我们分别从 一 C10K问题经典问答 二 java nio ByteBuffer用法小结 三 Channel 通道 四 Selector选择器 五 Centos Linux安装nc 六 windows环境下netcat的安
  • C++ 类大小分析

    以下测试代码的运行环境 Ubuntu 16 04 4 LTS gcc version 4 8 5 x64 空类 单一继承的空类 多重继承的空类所占空间大小为 1 字节 实例在内存中都有一个独一无二的地址 为了达到这个目的 编译器往往会给一个
  • 编译原理-总概

    语言执行过程 代码 解释器编译器 机器代码 cpu执行 编译型语言 在程序在执行之前需要一个专门的编译过程 通过编译器把程序编译成为可执行文件 再由机器运行这个文件 运行时不需要重新翻译 直接使用编译的结果就行了 解释型语言 是一边执行一边
  • NFT 笔记:我的加密艺术品投资逻辑

    There really is no such things as Art There are only artists 没有大写的艺术这种东西 只有艺术家 贡布里希 艺术的故事 撰文 小毛哥 Mao 推特 porounclemao 每当身
  • 钉钉F1 RK3399 咸鱼80元板子使用记录

    1 简单介绍 12V电源 建议2A 默认插电不开机 有大佬找到金属罩下的焊盘 短接可上电开机 在usb旁边的旁边有个端子接口 短接就可以开机 建议找个一样大的接口接个开关 到目前为止还未测试需要哪种接口 其它接口暂时不知 谁舍得拆一个钉钉F
  • 谷粒商城高级篇(36)——商品上架之上传数据到Elasticsearch

    商品上架之上传数据到Elasticsearch 功能需求分析 分析 怎么设计存储结构来保存数据 空间换时间 时间换空间 最终方案 存储结构 关于 nested 类型 商品上架功能实现 guimall common pom xml com x
  • resnet50网络结构_轻量(高效)目标检测网络结构设计

    目标检测网络可以分成如图的5个部分 input image 输入图像的大小对整个网络推断耗时有最直接的影响 小的图像 自然整个网络推断时间就会大大减少 一般来说 输入图像大小与网络深度正相关 即 大图像需要更深的网络提取更好的特征 back
  • JS下setTimeout与setInterval二者的差异

    JS下setTimeout与setInterval二者的差异 很多人都觉得这两个方法差不多 但是 实际上 他们差的很远呢 因为setTimeout 表达式 延时时间 在执行时 是在载入后延迟指定时间后 去执行一次表达式 记住 次数是一次 而
  • Linux I2C 驱动实验

    一 I2C 驱动 本章同样以 I MX6U ALPHA 开发板上的 AP3216C 这个三合一环境光传感器为例 通过 AP3216C 讲解一下如何编写 Linux 下的 I2C 设备驱动程序 Linux 的驱动分离与分层的思想 因此 Lin
  • 数据库DML数据操作语言

    文章目录 DML 数据操作语言 1 插入数据 INSERT 1 1 语法 1 2 插入默认值 注意事项 1 3 全列插入 2 修改数据 UPDATE 2 1 语法 注意 2 2 修改指定记录 添加WHERE子句 1 WHERE子句中常用的条
  • 前端面试之开发中遇到的问题【建议收藏】

    N1 精度问题 0 1 0 2 0 3 使用math js或者big js解决问题致命 重视 N2 频繁请求问题 点击按钮发送请求 但是不能疯狂发请求 等到结果返回后可再次发送请求 可以定义一个flag待请求结束打开flag 1 代码习惯
  • 年底了,清空自己,让心归零!

    眨眼一年 荏苒半生 时光总是别样匆匆 其实这一生 不就是一年一年这样过着 转眼到中年 而后到老年 时间总是悄无声息 让你我措手不及 转眼就年底了 我们都该学会沉淀自己 把过往一键清零 让未来一切重头 年底了 做个总结吧 这一年以来 让你觉得
  • 为何出现Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes ...

    当在IDEA中连接Redis时出现 Java HotSpot 64 Bit Server VM warning Sharing is only supported for boot loader classes because bootst
  • 大数据技术之Zookeeper

    第1章 Zookeeper入门 1 1 概述 Zookeeper是一个开源的分布式的 为分布式框架提供协调服务的Apache项目 Zookeeper从设计模式角度来理解 是一个基于观察者模式设计的分布式服务管理框架 它负责存储和管理大家都关
  • 前端html通栏做法实践

    在前端通栏中也有很多种 今天给大家分享我做的一种 大家可以借鉴一下 虽然可能就一般 但是一般的通栏也就够用了 大家可以根据自己的需求来自行设计即可 这只是一个参考模板而已 下面的代码复制即可用 html代码
  • web worker API开启浏览器js多进程

    面试使人进步 在大厂佬们的碾压下接触到了目前工作中没有遇到的新api和新思路以及解决方案 今天就来说说这个新的api web Worker 以下是MDN原话 指的是一种可由脚本创建的后台任务 任务执行中可以向其创建者收发信息 要创建一个 W
  • 关于微信小程序海报画布绘制

    小程序需要关于用户点击分享时弹起画布海报分享朋友或者朋友圈 1 我们需要先要创建一个画布 然后需要在js里去初始化画布并且制作出想要的画布海报样式 到目前为止咱们的画布海报图已经可以出现了 接下来咱们可以将已生成的海报图片 保存到手机或者分
  • vue 计算属性 vs 方法, 过滤器

    vue 计算属性 vs 方法 过滤器 最近换项目了 终于重新开始 使用 vue 了 继续学习中 computed 计算属性将被混入到 Vue 实例中 所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例 变量