前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue2(二)侦听器和计算属性

Vue2(二)侦听器和计算属性

原创
作者头像
CodeGoat24
修改2022-02-11 14:13:00
5330
修改2022-02-11 14:13:00
举报

上篇知识回顾:

  1. 什么是Vue?
  2. Vue的两大特性实现原理
  3. Vue的六大指令
  4. Vue的过滤器

本篇概要

  • 什么是watch侦听器
  • 什么是计算属性
  • vue-cli脚手架的使用

一、watch侦听器

1、介绍:

watch 侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作

当我们给某个数据对象加上侦听器后,一旦该对象的值发送改变,就会触发我们在监听器上自定义的函数,从而执行我们在函数中定义的的操作。

2、方法格式的侦听器

(1)使用:

在Vue实例的watch节点下,以该数据对象的名称为方法名,定义函数。

函数中会有两个默认参数:

1、数据对象被改变后的新值 newVal

2、数据对象被改变前的旧值 oldVal

(2)缺点:

1、无法在刚进入页面的时候,自动触发

2、如果侦听的是一个对象,如果对象中的属性发生了变化,不会触发侦听器

(3)语法格式:

代码语言:javascript
复制
<div id="app">
  <input type="text" v-model="username">
</div>

const vm = new Vue({
      el: '#app',
      data: {
        username: 'admin'
      },
      // 所有的侦听器,都应该被定义到 watch 节点下
      watch: {
        // 侦听器本质上是一个函数,要监视哪个数据的变化,就把数据名作为方法名即可
        // 新值在前,旧值在后
        username(newVal, oldVal) {
            console.log(newVal)
          })
        }
      }
    })

3、对象格式的侦听器

(1)使用

在watch节点下,以该数据对象的名称创建对象格式的侦听器,并在对象内创建hander(newVal,oldVal)

方法,来响应数据对象值的改变。

(2)好处

1、可以通过 immediate 选项,让侦听器自动触发

2、可以通过 deep 选项,让侦听器深度监听对象中每个属性的变化

(3)immediate 选项

默认情况下,Vue的组件在初次加载完毕后不会调用 watch 侦听器。如果想让 watch 侦听器立即被调用,则需要使用 immediate 选项

示例代码如下

代码语言:javascript
复制
      watch: {
        // 定义对象格式的侦听器
        username: {
          // 侦听器的处理函数
          handler(newVal, oldVal) {
            console.log(newVal, oldVal)
          },
          // immediate 选项的默认值是 false
          // immediate 的作用是:控制侦听器是否在组件加载后就立刻自动触发一次!
          immediate: true
        }
      }

(4)deep 选项

如果 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到

此时需要使用 deep 选 项,同时监听该对象的属性变化。

代码语言:javascript
复制
data: {
        // 用户的信息对象
        info: {
          username: 'admin'
        }
      },
watch: {
        info: {
          handler(newVal) {
            console.log(newVal.username)
          },
          // 开启深度监听,只要对象中任何一个属性变化了,都会触发“对象的侦听器”
          deep: true
        }
      }

也可以直接监听该对象的单个属性

代码语言:javascript
复制
watch: {
        // 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号
        'info.username'(newVal) {
          console.log(newVal)
        }
      }

二、计算属性

1、介绍:

计算属性指的是通过一系列运算之后,最终得到一个属性值。

这个动态计算出来的属性值可以被模板结构或 methods 方法使用。

计算属性应定义在Vue实例的computed节点下,并以方法的形式定义,方法内最后必须return一个字符串

2、计算属性的特点

① 虽然计算属性在声明的时候被定义为方法,但是计算属性的本质是一个属性

② 计算属性会缓存计算的结果,只有计算属性依赖的数据变化时,才会重新进行运算

代码语言:javascript
复制
    <div>
      <span>R:</span>
      <input type="text" v-model.number="r">
    </div>
    <div>
      <span>G:</span>
      <input type="text" v-model.number="g">
    </div>
    <div>
      <span>B:</span>
      <input type="text" v-model.number="b">
    </div>
    <span>“结果为”+ {{ rgb }}</span> //显示计算属性的值
<script>
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {
        // 红色
        r: 0,
        // 绿色
        g: 0,
        // 蓝色
        b: 0
      },
      // 所有的计算属性,都要定义到 computed 节点之下
      // 计算属性在定义的时候,要定义成“方法格式”
      computed: {
        // rgb 作为一个计算属性,被定义成了方法格式,
        // 最终,在这个方法中,要返回一个生成好的 rgb(x,x,x) 的字符串
        rgb() {
          return `rgb(${this.r}, ${this.g}, ${this.b})`
        }
      }
    });
</script>

三、Vue-cli的使用

1、什么是Vue-cli?

vue-cli 是 Vue.js 开发的标准工具。它简化了程序员基于 webpack 创建工程化的 Vue 项目的过程

使得程序员可以专注在撰写应用上,而不必花好几天去纠结 webpack 配置的问题。

2、安装和使用

vue-cli 是 npm 上的一个全局包

(1)使用 npm install 命令,即可方便的把它安装到自己的电脑上:

代码语言:javascript
复制
npm install -g @vue/cli 

(2)基于 vue-cli 快速生成工程化的 Vue 项目的命令:

代码语言:javascript
复制
vue create 项目的名称

(3)然后选择自己项目所需要用到的包,vue-cli会自动帮你安装到项目中

(4)然后就会在项目根目录下生成以下文件夹结构:

3、部分生成文件介绍

在工程化的项目中,vue 只需要通过 main.js 把 App.vue 渲染到 index.html 的指定区域中。

(运行npm run build后,webpack会将项目中的.vue组件打包,并在项目根目录生成dist文件夹,其中的index.html文件内容就是App.vue渲染上去的)

其中:

assets 文件夹:存放项目中用到的静态资源文件,例如:css 样式表、图片资源

components 文件夹:程序员封装的、可复用的组件,都要放到 components 目录下

main.js 是项目的入口文件。整个项目的运行,要先执行 main.js

App.vue 是项目的根组件

这里会涉及到webpack相关的知识,因为vue-cli本身就是基于webpack帮我们创建并配置工程化的前端新项目,如果你们还有些迷惑,可以看看我之前写的(前端工程化:Webpack之常见配置详解(干货)

总结:

不知道大家看完后,是否会产生一个疑问,我在文章中提到的Vue组件是什么呢?它有什么作用?....

下一篇文章我将与大家分享Vue组件及其生命周期的相关知识

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上篇知识回顾:
  • 本篇概要
  • 一、watch侦听器
    • 1、介绍:
      • 2、方法格式的侦听器
        • 3、对象格式的侦听器
          • (1)使用
          • 二、计算属性
            • 1、介绍:
            • 三、Vue-cli的使用
              • 1、什么是Vue-cli?
                • 2、安装和使用
                • 总结:
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档