Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue2学习计划二:mustache与methods和computed等Vue实例参数

Vue2学习计划二:mustache与methods和computed等Vue实例参数

作者头像
松鼠先生
发布于 2022-02-22 06:56:11
发布于 2022-02-22 06:56:11
39700
代码可运行
举报
运行总次数:0
代码可运行

上一节写了Vue实例的生命周期,我们心里有了个Vue里的数据绑定至DOM,那么具体怎么实现的呢?

要实现只需要在Vue绑定的DOM元素中使用mustache语法即可,简单例子如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
  <h2>{{message}}</h2>
  <hr>
  <h3>全名:{{fullName}}</h3>
  <h3>lastName:{{lastName}}</h3>
  <h3>firstName:{{firstName}}</h3>
  <h3>computed:{{name}}</h3>
  <button @click="getFullName">点击显示全名</buuton>
</div> 

<script src="./../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "hello vue",
      firstName: 'keobe',
      lastName: 'bryant',
      fullName: '请点击按钮'
    },
    methods: {
      getFullName(){
        this.fullName = this.firstName + " " +this.lastName
      }
    },
    computed: {
      name(){
        return this.firstName + " " +this.lastName
      }
    }
  })
</script> 

效果如下:

第一行:hello vue,这是data中的message变量,从这里可以看出来,这里的mustache语法,可以看做所有Vue实例挂载的DOM元素中的{{变量}}都替换成变量的值。 再分析一下Vue的实例对象,这段代码比上一篇文章中的代码在实例中多了两个对象,一个是methods,另一个就是computed。其中methods里存放的是方法,computed里存储的是计算属性。

我们在初始化Vue对象时,可以传入哪些参数呢?接下来就统一分析一下。然后一个一个的解释解释。

  1. el :提供一个页面上的DOM元素作为Vue实例的挂载目标,可以是选择器或者DOM实例
  2. data :存储响应式的数据
  3. methods :用于存储需要使用的方法
  4. computed :计算属性????
  5. components :存放子组件对象
  6. 生命周期函数 :存放上一节讲的各种生命周期函数

el和data上一节就讲过了,就不在复述。这里重点描述一下computed(计算属性)。细心的已经发现问题了,为什么它叫计算属性,但是在例子中确实一个方法???还有它到底是一个什么东西,如此的难以理解。为什么要使用它,用方法来替代不是更香吗?

**为什么需要计算属性:**用小白语言解释官方的标准话术就是,当模板中的数据运算太多,就会难以维护,因此引入计算属性。再简化一下就是,计算属性就是为了把一些运算封装,然后引入。哪些运算呢?比如字符翻转,大小写转化,数值相加减乘除,以及这些全部混用。当任何你觉得复杂的运算出现时,你都应该使用计算属性。 怎么使用

computed:{{name}}

这一行就是使用,看上面例子应该能了解。 使用计算属性的优势:假设我们有一个性能开销比较大的计算属性 A ,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。 这也完美的解释了为什么不用方法而要使用计算属性,因为计算属性会缓存。计算属性在多次调用的时候,只会执行一次,结果就会缓存,下一次调用直接使用缓存好的。而方法则是调用几次,就执行几次。 计算属性到底是什么:真实的计算属性是下面代码中的前面部分,后面部分就是我们常用的简写形式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  name: {
    set: function(){},
    get: function(){return 'abc'}
  }
}
//简写后
computed: {
  name: function(){
    return 'abc'
  }
}

因此

computed:{{name}}

中调用计算属性name时,没加小括号,实质上是返回了get方法。计算属性一般没有set方法,绝大多多多数情况下都是这样。

**小作业:**接下来我们用代码实现一下计算属性与方法的区别,直观的观察一下计算属性的缓存:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{fullName}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
<h2>{{getFullName()}}</h2>
</div>

<script src="./../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      firstName: 'Li',
      lastName: 'KUN'
    },
    computed: {
      fullName: function(){
        console.log('fullName')
        return this.firstName + ' '+ this.lastName
      }
    },
    methods: {
      getFullName: function (){
        console.log("getFullName()")
        return this.firstName + ' '+ this.lastName
      }
    }
  })
</script>

结果如下:可以明显的看到方法执行了6次(这里打印一次,即为执行一次)。而计算属性只打印了一次,所以只执行了一次。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue之计算属性
--', newValue); const names = newValue.split(' '); this.firstName = names[0]; this.lastName = names[1]; }, get: function () { return this.firstName + ' ' + this.lastName } },
yuanshuai
2022/08/22
6020
Vue之计算属性
Vue专题 02_计算属性(computed) VS 方法(methods)
两种方式的最终结果都是完全相同的(这里解释一下为什么会相同:当计算属性所依赖的数据发生改变时,计算属性会重新调用;当data中的任何一个数据发生变化时,Vue的模板都会重新解析一遍(Vue都会拿过来模板整体再阅读一遍),所以方法也被调用了一次)
用户9999906
2022/09/26
4160
Vue教程(methods,watch及computed的区别)
  本文我们通过案例来介绍下 watch 和 computed 的使用,案例效果如下:
用户4919348
2019/08/08
6530
计算属性的基本操作和复杂操作
FGGIT
2024/10/15
1120
Vue学习3:计算属性computed与监听器
下面是计算属性相关代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>vue3</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <!--<link rel="stylesheet" type="text/css" href="main.
用户1149564
2018/05/28
5410
vue学习笔记(3)--computed, watch,calss, style
声明一个计算属性severmessage,在computed中被指向对message进行一些方法操作后的返回值
子舒
2022/06/09
7230
vue之计算属性的缓存computed的使用
计算属性的缓存 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title>
兮动人
2021/06/11
6480
vue之计算属性的缓存computed的使用
Android开发人员不得不学习的Vue.js基础
Vue是一套用于构建用户界面的渐进式框架。Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
用户2802329
2018/09/21
5500
Vue中computed和watch比较
Vue在监听数据的时候我们都会用computed和watch,但是很少人真正的去比较两个的区别,一般都是能实现就行。本人也是,习惯了watch,之后就几乎没用过computed。所以用官网的例子理解一下这两者的区别。
wade
2020/04/24
7320
Vue核心知识:computed、methods和watch的区别
当我们改变 number 时,整个应用会重新渲染,vue 会被数据重新渲染到 dom 中。
xyzzz
2020/09/26
6K0
vue之computed计算属性的基本使用
案例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <h2>{{firstName + ' ' + lastName}}</h2> <h2>{{firstName}} {{lastName}}</h2> <h2>{{getFullName()}}</h2> <h2>{{fullN
兮动人
2021/06/11
5740
vue之computed计算属性的基本使用
vue学习笔记3
什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可; 组件化和模块化的不同:
用户6362579
2019/09/29
7860
Vue模板语法
我们知道vue中data数据改变的时候,页面元素的数据也会改变。但是,在某些情况下,我们可能不希望界面随意的跟随改变,这个时候,我们就可以使用一个Vue的指令。
说故事的五公子
2022/05/09
3.2K0
Vue模板语法
vue笔记3,计算笔记
我们己经可以搭建出一个简单的 Vue 应用,在模板中双向绑定一些数据或表达式了。但是表达式如果过长,或逻辑更为复杂时,就会变得臃肿甚至难以阅读和维护 举例
bamboo
2019/01/29
5850
vue笔记3,计算笔记
vue入门教程(一)「建议收藏」
Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
全栈程序员站长
2022/09/05
1.3K0
Vue 学习笔记 —— 常用特性 (二)
做一名在校大学生,我的梦想是做一名独立的开发者,具备全栈思维额能力的一名开发者,我的技术栈是 SpringBoot + Vue 学习记录来自
Gorit
2021/12/08
4.9K0
Vue 学习笔记 —— 常用特性 (二)
Vue 01.基础
插值表达式会出现闪烁问题,即在网速慢时会出现{{ msg }},数据加载好后才会显示数据
LittlePanger
2020/04/14
1.6K0
10天从入门到精通Vue(四)Vue中的路由指南
考虑一个问题:想要实现 名 和 姓 两个文本框的内容改变,则全名的文本框中的值也跟着改变;
共饮一杯无
2022/11/28
5490
10天从入门到精通Vue(四)Vue中的路由指南
【Vue.js】005-Vue.js计算属性和侦听器
模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:
訾博ZiBo
2025/01/06
1280
【Vue.js】005-Vue.js计算属性和侦听器
Vue学习-基础语法
建议在ES6开发中,优先使用const,只有需要改变某一个标识符的时候才使用let。
花猪
2022/02/17
1.7K0
Vue学习-基础语法
相关推荐
Vue之计算属性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验