vue2知识点梳理

2023-10-27

Vue梳理

对于Vue,我们并不陌生;现在我们来梳理一下关于它的东西吧。

知识点

1.生命周期

最基本的就是它的生命周期。

  1. beforeCreate
    在 beforeCreate 生命周期函数执行时,data 和 methods 中的数据都还没有初始化。
  2. created
    在 created 中,data 和 methods 都已经被初始化好,数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。一般我们在该生命周期内发出 http 请求。
  3. beforeMount
    在 beforeMount中,模板已经在内存中编辑完成,尚未把模板渲染到页面,也就是说页面中的元素,还没有被真正替换。相关的 render 函数首次被调用。 可在当前生命周期中进行一些数据的修改。
  4. mounted
    实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好。可在当前生命周期中获取到真实的 DOM 元素,还可以在当前生命周期中做方法的实例化,给元素添加一个 ref 属性,且值必唯一,通过:this.$refs.属性获取 DOM 元素;还可访问子组件等。
  5. beforeUpdate
    页面中的显示的数据,还是老数据,此时 data 数据是最新的,页面尚未和最新的数据保持同步,这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器,也可通过当前生命周期来检测数据的变化。
  6. updated
    页面和 data 数据已经保持同步,都是最新的。如在当前生命周期中如果做实例化操作的时候必须做条件判断。
  7. activated
    keep-alive 组件激活时调用。
  8. deactivated
    keep-alive 组件停用时调用。
  9. beforeDestroy
    实例销毁之前调用。
  10. destroyed
    Vue 实例销毁后调用。通常这里用作于移除所有的事件监听和定时器,被 keep-alive 包裹的组件,不会被销毁,而是被缓存起来。

2.双向绑定-mvvm

  1. 友好阐述
    mvvm是实现了双向绑定的一种模式,在视图层或模型层改变数据都会实现页面和模型数据的一种动态改变。
    在这里插入图片描述

  2. 原理
    vue在创建 vm 时,会将数据配置到实例中,然后通过 Object.defineProperty 方法,为数据动态的添加 getter 与 setter 方法。当获取数据的时候,会触发对应的 getter 方法,当设置数据的时候,触发对应的 setter 方法。然后当 setter 方法触发完成,内部会进一步触发watcher,数据改变后视图就更新完毕了。
    深入理解可以看: https://blog.csdn.net/weixin_44209472/article/details/88651509?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165882865116782388047920%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165882865116782388047920&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-88651509-null-null.142v34pc_rank_34,185v2control&utm_term=vue%E5%8F%8C%E5%90%91%E7%BB%91%E5%AE%9Amvvm&spm=1018.2226.3001.4187.

3.计算属性(computed)、方法(methods)和监听属性(watch)

  1. 方法(methods)
    我的理解是将一段逻辑以一函数的形式展示出来就叫做方法。
  2. 计算属性(computed)
    我们在模板(HTML)中放入太多的逻辑会让模板过重且难以维护,而且不好阅读。这个时候就需要计算属性 computed ;总的来说,计算属性走缓存 ,只要计算属性处理过数据之后,数据在没有改变的时候,无论你在页面调用多少次,他都只执行一次, 然后剩下的调用都是从缓存中进行读取的 ,节省资源函数 。而方法(methods)只要被调用那么就会执行 ,调用多少次执行多少次,比较消耗资源。
  3. 监听属性(watch)
    当我们需要在数据变化时去执行异步或开销较大的操作时,这个时候需要属性检测(watch)。而不要使用计算属性,因为计算属性是同步的(需要立即返回结果),监听 data 中的数据,如果数据改变,那么 watch 就会收到通知调用一个函数(我们就可以在这个函数中完成指定的逻辑):
    // An highlighted block
    // 第一种方式:监听整个对象,每个属性值的变化都会执行handler
    // 注意:属性值发生变化后,handler执行后获取的 newVal 值和 oldVal 值是一样的
         example: {
             // 每个属性值发生变化就会调用这个函数
             handler(newVal, oldVal) {
                 console.log('oldVal:', oldVal)
                 console.log('newVal:', newVal)
             },
             // 立即处理 进入页面就触发
             immediate: true,
             // 深度监听 属性的变化
             deep: true
         },
         // 第二种方式:监听对象的某个属性,被监听的属性值发生变化就会执行函数
         // 函数执行后,获取的 newVal 值和 oldVal 值不一样
         'example.name'(newVal, oldVal) {
             console.log('oldVal:', oldVal)  
             console.log('newVal:', newVal)   
         }

4.路由

前端路由本质就是去监听 URL 的变化,匹配路由规则,然后显示相应的页面,并且无须刷新页面。

  1. ** hash 模式和 history 模式** :
    区别
    hash 出现在 URL 中,但不会被包含在 http 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面,Hash 相对来说更简单,并且兼容性也更好。
    history 是HTML5 新推出的功能,它利用了 html5 history interface 中新增的 pushState() 和 replaceState() 方法。这两个方法应用于浏览器记录栈,在当前已有的 back、forward、go 基础之上,history 改变 URL 同样不会引起页面的刷新,只会更新浏览器的历史记录。
    原理
    hash 模式的原理是 onhashchange 事件,可以在 window 对象上监听这个事件。 history :hashchange 只能改变 # 后面的代码片段,history api (pushState、replaceState、go、back、forward) 则给了前端完全的自由,通过在window对象上监听 popState() 事件。

  2. ** $route 和 $router ** :
    route是用来获取路由信息的,包括了路由的跳转方法,钩子函数等:

        <p>路径:{{$route.path}}</p>
		<p>参数:{{$route.params }}</p>
		<p>路由名称:{{$route.name}}</p>
		<p>路由查询参数:{{$route.query }}</p>
 router是用来操作路由的,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
    this.$router.push("/login");
 	//使用对象的形式 
 	this.$router.push({ path:"/home" });
 	//使用对象的形式,参数为地址栏上的参数
 	this.$router.push({ path:"/home",query:{username:"jack"} }); 
 	//使用对象的形式 ,参数为params 不会显示在地址栏
 	this.$router.push({path:'/detail',params:{id:5,name:'lili'}})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue2知识点梳理 的相关文章

随机推荐

  • C语言上机实验思路分享4

    实验内容 方法和步骤 1 输入 10 个整数 用选择法对这 10 个整数按从小到大的顺序排序并输出排序后的结 果 程序代码 include
  • 从现实抽象出类的步骤

    第一 找出分类 分析出类 第二 找出类的特征 分析类的相关属性 第三 找出类的行为 分析类的方法 转载于 https www cnblogs com liumeilin p 7018110 html
  • AVRCP协议介绍

    文章目录 1 AVRCP协议介绍 1 2 概念 1 2 1 1 2 2 role 用途 2 AVRCP框架 1 AVRCP协议介绍 1 2 概念 1 2 1 1 2 2 role CT controller 是一种通过向目标发送命令帧来启动
  • 静态编译和动态编译,java与javascript区别总结

    1 静态编译和动态编译 静态编译是程序在编译时就已经确定好了所有类之间的关系 要运行程序所有类 都缺一不可 若在开始运行时就把其中的某类文件丢失 就会产生 NoClassDefFoundError错误 程序会终止 在程序运行前的装载期间就把
  • flutter获取状态栏高度

    获取状态栏高度 import dart ui MediaQueryData fromWindow window padding top 系统默认的appBar等高度 位于Dart Packages flutter src material
  • 物理渲染学习笔记(三)——Cook-Torrance微表面模型

    从 Phong 到 GGX 光照模型林林总总 一直没能找机会梳理一遍 这几天依次都自己实现了一遍 也正好总结下 Microfacet 普通的着色模型假设着色的区域是一个平滑的表面 表面的方向可以用一个单一的法线向量来定义来定义 而 Micr
  • 程序员吃青春饭?程序员在35岁以后是否需要转行?你规划好了吗?

    都说程序员是一个吃青春饭的职业 都认为程序员到了35岁以后不转管理岗位就没有什么前途了 可能就要考虑换别的行业了 年龄越大可能越写不动代码了 那么程序员是不是35岁以后需要转行 我说说我自己的观点 关于程序员35岁之后是不是要转行这个问题
  • 区块链技术基础(笔记)

    一 区块链本质上是一个对等网络 peer to peer 的分布式账本数据库 二 区块链本身其实是一串链接的数据区块 其链接 指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值 三 基本概念 1 数据区块 比特币的交易会保存在数据
  • Element ui 导航栏 刷新时高亮

    1 在组件中
  • 原理解析:JS 代码是如何被浏览器引擎编译、执行的?

    原理解析 JS 代码是如何被浏览器引擎编译 执行的 分析浏览器引擎对 JS代码的编译情况 并结合日常的 JavaScript开发经验 重新理解底层的编译解析机制 对其底层原理的理解 将有助于理解前端的跨端应用 以及一套代码生成多种小程序相关
  • csu 1809 Parenthesis 2016湖南省赛 G

    Problem acm csu edu cn csuoj problemset problem pid 1809 vjudge net contest 161962 problem G Reference blog csdn net l95
  • spring之bean注入的意义

    简而言之就是 首先 service注解在当前类的上边 表示在当前类是spring管理的一个bean 使用 autowired 将另外一个A类的实体bean注入到当前类中 让当前类具备那个A类的功能
  • Android SDK & AVD Manager

    0 前言 Android源码中的prebuilts devtools tools android程序可根据不同的参数来启动SDK Manager或AVD Manager 1 SDK Manager 1 启动 android or andro
  • Chrome 基于 Wappalyzer 查看网站所用的前端技术栈

    1 找到谷歌商店 https chrome google com webstore search wappalyzer utm source ext app menu 2 搜索 Wappalyzer 3 添加至Chrome 4 使用 插件
  • MySQL的脏读、幻读、不可重复读

    首先我们要知道 我们的脏读 幻读 不可重复读这些概念是在事务中的概念 脏读 也就是读取了未提交的数据 比如我开启了一个事务A 在里面操作一个用户表 获取里面一个用户的积分 比如此时这个用户的积分是100 此时有另外一个事务B也操作了这个用户
  • LD3320语音识别

    芯片介绍 LD3320 不需要外接任何辅助的Flash芯片 RAM芯片和AD芯片 就可以完成语音识别功能 每次识别最多可以设置50项候选识别句 每个识别句可以是单字 词组或短句 另一方面 识别句内容可以动态编辑修改 只需要主控MCU把识别关
  • 碎碎念,浅浅饮-------Day30

    这不是一篇关乎技术的文章 它偏离了我原本的计划轨迹 但是 相信它的意义会远超出任何一项技术带给我的价值 高考已经开始了 不知道在这片宁静的夜空下有多少人已经美美的睡了 香甜憨然 又有多少人这睡着的眼角还挂着泪滴 偶尔蹙起眉头 却也记载不下那
  • 固态硬盘接口类型介绍

    固态硬盘接口类型介绍 现在装机硬盘肯定会首选SSD 容量小一点不怕 后面再补一个机械硬盘不迟 SSD有着稳固和高速的优势 深受用户喜爱 然而SSD有着各种各样的尺寸和接口 并不是每一个用户的电脑都能通用 所以选购SSD硬盘前必须先了解SSD
  • ajax请求出现闪屏,jquery $.Ajax 火狐浏览器闪屏解决办法

    本文章介绍了关于jquery的async false Ajax 火狐浏览器闪屏解决办法 jquery的async false 这个属性 默认是true 异步 false 同步 代码如下 复制代码 ajax type post url pat
  • vue2知识点梳理

    Vue梳理 对于Vue 我们并不陌生 现在我们来梳理一下关于它的东西吧 知识点 1 生命周期 最基本的就是它的生命周期 beforeCreate 在 beforeCreate 生命周期函数执行时 data 和 methods 中的数据都还没