Vue.js 比较重要知识点总结二

news2024/11/24 8:45:36

概述

  • vue3 组合式API生命周期钩子函数有变化吗?
  • Composition API 与 Options API 有什么区别?
  • watch 和 watchEffect 的区别?
  • vue2 如何升级到 vue3 ?

vue3 组合式API生命周期钩子函数有变化吗?

选项式API 和 组合式API 生命周期钩子对比:

setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显示的定义它们。其他的钩子都可以编写到 setup内。

值得注意的是组合式API中的钩子函数,通过在生命周期钩子前面加上 “on” 来访问组件的生命周期钩子,需要注册,并且只能在setup 期间同步使用,因为它们依赖于内部的全局状态来定位当前组件实例。

import { onMounted } from "vue"
export default {
 setup() {  // mounted
  onMounted(() => {   console.log('Component is mounted!')
  })
 }
}

更多精彩内容,请微信搜索“前端爱好者戳我 查看

Composition API 与 Options API 有什么区别?

Options API 是啥?

vue2 中我们把一个 vue 文件中 data、methods、props、mounted、computed 等定义属性和方法,共同处理页面逻辑,这种方式叫做 Options API。

这种方式开发的复杂组件,同一个功能的往往需要在不同 vue 配置项中定义属性和方法,代码比较分散。如果功能比较复杂,维护代码的时候往往会很难分清每个方法对应的功能,增加了代码维护成本。所以 vue3 舍弃了 Options API ,换用 Composition API。

Composition API 是啥?

Composition API 是 vue3 新增的,所以 vue2 没有。

在 Composition API 中,根据代码逻辑功能来组织的,一个功能所定义的所有 API 都会放到一起,这样即使功能复杂,代码量增大,都可以一下子定位到某个功能的所有代码,代码维护方便。

它的最大特点就是:高内聚,低耦合

vue3 仍然支持 options API,但我们更推荐使用 Composition API。

优劣比较:

  • 更好的可编程性。
  • 更优的代码组织。
  • 更好的逻辑抽象能力。
  • 对 tree-shaking 友好,代码也更容易压缩。
  • 没有 this ,没烦恼。

如何使用 Composition API 和 Options API

  • Composition API 更好的代码组织,更好的逻辑复用,更好的类型推到
  • 小型项目,业务逻辑简单,用Options API
  • 中大型项目,业务逻辑复杂的,用Composition API
  • Composition API 是为了解决复杂业务逻辑而设计的
  • Composition API 类似React Hooks

watch 和 watchEffect 的区别?

它们之间的相同点有:

  • watch 和 watchEffect 都是监听器,watchEffect 是一个副作用函数。
  • watch 与 watchEffect 在手动停止侦听、清除副作用 (将 onInvalidate 作为第三个参数传递给回调)、刷新时机和调试方面有相同的行为。

它们之间的区别有:

  • watch 需要传入监听的数据源,而 watchEffect 可以自动手机数据源作为依赖。
  • watch 可以访问倒改变之前和之后的值,watchEffect 只能获取改变后的值。
  • watch 运行的时候不会立即执行,值改变后才会执行,而 watchEffect 运行后可立即执行。这一点可以通过 watch 的配置项 immediate 改变。
const numberRef = ref(100)
const state = reactive({
  name: 'test',
  age: 20
})

watch:

watch(numberRef, (newNumber, oldNumber) => {
    console.log('ref watch', newNumber, oldNumber)
  }
  , {
      immediate: true // 初始化之前就监听,可选
  }
)

setTimeout(() => {
    numberRef.value = 200
}, 1500)

watch(
    // 第一个参数,确定要监听哪个属性
    () => state.age,

    // 第二个参数,回调函数
    (newAge, oldAge) => {
        console.log('state watch', newAge, oldAge)
    },

    // 第三个参数,配置项
    {
        immediate: true, // 初始化之前就监听,可选
        // deep: true // 深度监听
    }
)

setTimeout(() => {
    state.age = 25
}, 1500)
setTimeout(() => {
    state.name = 'testA'
}, 3000)

watchEffect:

watchEffect(() => {
    // 初始化时,一定会执行一次(收集要监听的数据)
    console.log('hello watchEffect')
})
watchEffect(() => {
    // 监听的是state.name 不会监听state.age
    console.log('state.name', state.name)
})
watchEffect(() => {
    console.log('state.age', state.age)
})
watchEffect(() => {
    console.log('state.age', state.age)
    console.log('state.name', state.name)
})
setTimeout(() => {
    state.age = 25
}, 1500)
setTimeout(() => {
    state.name = 'test1'
}, 3000)

vue2 如何升级到 vue3 ?

如果是把之前的 vue2 项目升级到 vue3 ,先卸载旧版本的 vue-cli,安装最新版本。安装完成之后,检查 vue 的版本。

然后需要注意,把项目中 vue3 发生改变或被废弃的特性需要进行修改。

如:

  • $children 被 vue3 移除,使用 $children 的需要替换为 $ref。
  • filters 被移除,更改为 computed 。
  • $destory 被移除,需要删除掉。
  • 插槽的新变化。
  • Vuex 使用发生改变。
  • vue-router 使用发生改变等等。

可以自行在官网查看升级指南。地址如图

地址:https://v3-migration.vuejs.org/zh/

参考地址:

  • https://tangjiusheng.com/web/4935.html
  • https://blog.csdn.net/weixin_41759744/article/details/125305021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的继承性

1.为什么要有类的继承性?(继承性的好处) ① 减少了代码的冗余,提高了代码的复用性② 便于功能的扩展③ 为之后多态性的使用,提供了前提 2.子类继承父类以后有哪些不同? 2.1体现: 一旦子类A继承父类B以…

汇编基础学习

1. 利用ldr向寄存器里面写较大数据,和设置寄存器的某些位 2. 这个lable 不对呢 验证宏值加载到寄存器里是正确的。 pc 的地址是0x80594 当前pc指针加上宏定义值的地址值。 3 打印字符串 字符串加载了8个字节到寄存器里面, 如何调试打印出来呢&#xff1…

数据库设计的原则有哪些

数据库设计是程序开发的核心部分,标准的数据库设计原则和步骤能有效提高开发进度和效率。 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据&#xf…

RK3588平台开发系列讲解(驱动基础篇)中断相关函数

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、获取中断号相关函数二、申请中断函数三、free_irq 函数四、中断处理函数五、中断使能和禁止函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 中断有专门的中断子系统,其实现原理很复杂,但是驱…

Git详解——安装、使用、搭建、IDEA集成

Git 看目录,越往后面越重要 目录一、git是什么?二、为什么要使用Git?三、版本控制工具四、git下载安装以及环境配置五、git基本命令六、git项目搭建七、远程仓库怎么搞?git,gitlab,github,gitee区别八、idea集成Git 一、Git是什…

HBase2.2.2安装(单机、伪分布)

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装(单机、伪分布) Hadoop集群搭建 HBase2.2.2安装(单机、伪分布) Zookeeper集群搭建 文章目录 系列文章目录前置条件一、HBase2.2.2安装二、配置环境变量1、问题 三、单机模式1、修…

浅谈数字化

一、数字化转型 数字化转型(Digital transformation)是建立在数字化转换(Digitization)、数字化升级(Digitalization)基础上,进一步触及公司核心业务,以新建一种商业模式为目标的高…

仙人掌之歌——权力的游戏(3)

像疯子一样死去 陈速没想到李通是在香山深处一所疗养院里休养,军方的岗位森严,进去还得把身份证押在门卫室。李通穿着病号服悠哉地晃过来把陈速领了进去。 “通哥,这儿真是个好地方啊。” 陈速由衷地赞叹着,望着大院里古树参天&…

九、Spring Cloud—gateway网关

一、引言 每个微服务都需和前端进行通信,解决每个微服务请求时的鉴权、限流、权限校验、跨域等逻辑,放在一个统一的地方进行使用。 在微服务架构中,网关是一个重要的组件,它作为系统的入口,负责接收所有的客户端请求…

Shiro高级及SaaS-HRM的认证授权

Shiro高级及SaaS-HRM的认证授权 Shiro在SpringBoot工程的应用 Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架,保证项目的平稳运行。 在之…

前端042_图表展现_自适应

自适应 当缩小窗口时,饼图和柱状图不会自动自适应,会被遮挡住。因为 ECharts 本身并不是自适应的,当你父级容器的宽度发生变化的时候需要手动调用它的 .resize() 方法。 其中 vue-element-admin项目中已经实现了自适应效果,只要将对应代码拷贝引用即可。将 vue-element-adm…

Java中的this、package、import

this 在Java中,this的作用和其词义很接近。 它在方法内部使用,即这个方法所属对象的引用; 它在构造器内部使用,表示该构造器正在初始化的对象。 this 可以调用类的属性、方法和构造器 什么时候使用this关键字呢&#xff…

使用kettle进行日志分析

分析日志是一个大数据分析中较为常见的场景。在Unix类操作系统里,Syslog广泛被应用于系统或者应用的日志记录中。Syslog通常被记录在本地文件内,比如Ubuntu内为/var/log/syslog文件名,也可以被发送给远程Syslog服务器。Syslog日志内一般包括产…

机构的专属的线上招生 教学小程序搭建教程

小程序已经成为了很多教育机构的招生、推广重要渠道之一。相比于传统的网站或APP而言,小程序更加轻量级,更加易于传播和分享。在小程序搭建过程中,无需编写复杂的代码,只需要根据模板进行简单的操作,就可以轻松打造自己…

【Web开发技术】JWT令牌技术(信息安全)

文章目录 一、描述二、依赖三、配置四、java文件中的准备五、开始使用 一、描述 说到JWT令牌技术,就需要提到cookie和session两种技术。这两种技术在跨域问题(计算机网络的知识,百度可以搜到,就回归重点)上存在一定的局…

《智能新工厂规划白皮书》下 | “四步”规划智能工厂

中国制造业有着最大制造产能、最强配套能力和最大消费市场三个无可比拟的优势,随着产能升级,众企业的新工厂会开展智能工厂规划布局,从而实现降本减耗、提高效益的经营目标,以增强企业市场竞争力。 新工厂规划时,企业…

【GitHub已开源】某博热点事件评论数据分析与用户情感分析平台完整项目

找遍全网无奈只能自己开发某博热点评论数据爬取与用户情感分析平台,这就是技术人的创新! 最近想看一下微博热点评论的用户人群情感趋势,想到的就是去爬取某博的评论数据,然后进行一个可视化的情感分析。想想吧,这个项目…

RPC核心原理

大家好,我是易安,今天我们一起来研究下RPC的核心原理。 什么是RPC? RPC的全称是Remote Procedure Call,即远程过程调用。简单解读字面上的意思,远程肯定是指要跨机器而非本机,所以需要用到网络编程才能实现…

用Gmail邮箱注册任天堂日本区账号

任天堂是一家日本公司,日区的任天堂可以买到常驻的任亏券,兑换任天堂第一方游戏,而且经常搞活动,可以买到低价的游戏。 首先进入任天堂官网 https://accounts.nintendo.com/register 注册账号 比如我的Gmail邮箱为 zhaooleegma…

EBU6304 Software Engineering 知识点总结_3 requirements

requirements 确定需求是软工设计中最重要的部分。 feature to satisfy customer. indicates what should this sys do. 可能是高层抽象的需求 high-level abstract 或者底层具体的 low-level specific. Stakeholder 利益相关者:受系统影响的组织或个人&#x…