计算属性

vue的模板里可以使用表达式,但是它的设计初衷是用于简单计算,在模板中放入太多逻辑会让模板过重且难以维护。例如:

<div id="example">
{{ message.split('').reverse().join('') }}
</div>

这里很难一眼看出是要显示什么,而且要多次使用的话也很麻烦,因此对于复杂逻辑应使用计算属性

错误示例
```html

Title

{{ message.split('').reverse().join('') }}


<br>
正确写法
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 直接使用方法名就行,不用加括号 -->
<p>{{ reversedMessage }}</p>
</div>
<script>
//建议vue的变量命与作用的标签id一致
let app = new Vue({
el: "#app", //关联dom对象
data: {
message: 'I have a dream' //模板使用的数据
},
//定义计算属性
computed: {
// 在computed里定义方法,使用的时候直接写方法名
reversedMessage: function () {
// `this` 指向 app 实例,data里面的数据可以直接获取到htis.message
return this.message.split('').reverse().join('')
}
}
}) </script>
</body>
</html>

## 计算属性与方法的不同

上述例子中也可以通过调用方法来达到同样的目的

在组件中定义方法

// 在组件中
methods: {
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
}

调用方法

<p>Reversed message: "{{ reversedMessage() }}"</p>

就得到的结果而言,两种方式是完全一致的。但是不同的是,计算属性是基于它们的依赖进行缓存的,也就是说,计算属性只有在它的相关依赖发生改变时才会重新求值,对于上述的例子,只要message不发生改变,多次访问reversedMessage计算属性会立即返回结果而不必再次执行函数

下面我们来验证这个结论
```html

Title

使用计算属性

{{reversedMessage}}

<hr>

<p>使用方法</p>
<p>{{reversedMessageMethod()}}</p>

```


打开html,右键检查-console

## 小结
- 模板内表达式包含复杂逻辑时,应使用计算属性
- 只要计算属性使用的数据不发生变化,计算属性就不会执行,而是直接使用缓存

vue的计算属性与方法的不同的更多相关文章

  1. vue中计算属性computed方法内传参

    vue中computed计算属性无法直接进行传参 如果有传参数的需求比如说做数据筛选功能可以使用闭包函数(也叫匿名函数)实现 例如: 在上篇博客vue安装使用最后的成绩表练习中的过滤功能的实现: &l ...

  2. vue中计算属性的get与set方法

    计算属性get set方法 在vue的计算属性中,所定义的都是属性,可以直接调用 正常情况下,计算属性中的每一个属性对应的都是一个对象,对象中包括了set方法与get方法 computed:{ ful ...

  3. 浅谈Vue中计算属性(computed)和方法(methods)的差别

    浅谈Vue中计算属性(computed)和方法(methods)的差别 源码地址 methods方法和computed计算属性,两种方式的最终结果确实是完全相同 计算属性是基于它们的响应式依赖进行缓存 ...

  4. Vue2.x源码学习笔记-Vue实例的属性和方法整理

    还是先从浏览器直观的感受下实例属性和方法. 实例属性: 对应解释如下: vm._uid // 自增的id vm._isVue // 标示是vue对象,避免被observe vm._renderProx ...

  5. Vue.js 计算属性是什么

    Vue.js 计算属性是什么 一.总结 一句话总结: 模板 表达式 维护 在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护 ...

  6. vue生命周期以及vue的计算属性

    一.Vue生命周期(vue实例从创建到销毁的过程,称为生命周期,共有八个阶段) 1.beforeCreate :在实例初始化之后,数据观测 (data observer) 和 event/watche ...

  7. vue的计算属性

    在模板中写入过多的逻辑使模板过重且难以维护.因此有了计算属性(computed)的产生. 你可以像绑定普通属性一样在模板中绑定计算属性,vue知道计算属性中的函数依赖data中的数据.所以当data中 ...

  8. Vue.js 计算属性(computed)

    Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...

  9. VUE:计算属性和监视

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection

    直接上图比较直观 tips one:先看看自己 控制台的 SQLplus 可以登录不 可以直接往下面走 ,如果不可以就现在服务里面找到 Oracle 开头的服务启动就好 实在不会可以百度 注:由于该步 ...

  2. Centos7上安装单机版redis

    Centos 7 上安装单机版redis Redis 官网下载 https://redis.io/download 1. 下载.解压.安装 cd /usr/local #wget http://dow ...

  3. 关键字-this

    1.当成员变量和局部变量重名时,在方法中使用this时,this指向的是该方法所在类的成员变量. package gc.test.java.cs1; public class User{ public ...

  4. Vue (一) --- vue.js的快速入门使用

    =-----------------------------------把现在的工作做好,才能幻想将来的事情,专注于眼前的事情,对于尚未发生的事情而陷入无休止的忧虑之中,对事情毫无帮助,反而为自己凭添 ...

  5. [Alpha阶段]发布说明

    [Alplha阶段]发布说明 小小易校园小程序发布说明 版本功能 [Alpha版本]功能说明 1.注册及登录功能 2.修改密码功能 3.自动登录.退出登录功能 4.个人资料修改及简历模板功能 5.查看 ...

  6. 03SpringBoot用JdbcTemplates访问Mysql

    03SpringBoot用JdbcTemplates访问Mysql 文章指导 学习笔记 学习代码 初始化mysql -- create table `account` DROP TABLE `acco ...

  7. Java 关于cannot resolve symbol 'log'报错问题

    我用的是IDEA,报错的内容是:cannot resolve symbol 'log' 如图所示: 解决方法: 1.安装插件:Settings→Plugins,输入lom回车: 2.然后选择Insta ...

  8. Python中的 sort 和 sorted

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...

  9. dpdk-18.11开发库编译安装

    简介 dpdk官网 安装 下载 点击下载地址,选择合适的版本下载.这里下载DPDK 18.11.0 (LTS)版本. 编译 将下载的dpdk-18.11.tar.xz上传服务器,解压,这里放在了/op ...

  10. jquery中关键字写错导致的错误——dataType写成dateType(data写成date)

    由于不会报错,会导致原本servlet后端传回的json字符串不能被正确解析为json格式,而只是显示为字符串. 具体错误表现为:在浏览器Console中显示为字符串,但是在json.cn中可以被正常 ...