vue3(1)

2023-10-26

Vue3.0

  • 了解vue3.0:

(1)简要了解

  1. Vue.js 3.0“one Piece”正式版再20年9月份发布
  2. Vue3支持vue2的大多数特性
  3. 更好的支持TS
  1. 性能提升
  1. 打包大小减少41%
  2. 初次渲染快55%,重新渲染快133%
  3. 内存减少54%
  4. 使用proxy代替defineProperty实现数据响应式
  5. 重写虚拟DOM的实现和Tree-Shaking(摇树)
  1. 新增特性
  1. Composition(组合)API
  2. Setup

ref和reactive

computed和watch

新的生命周期函数

provide和inject

  1. 新组件

Fragment--文档碎片

Teleport--瞬移组件的位置

Suspense--异步加载组件的loading界面

  1. 其他API更新

全局API的修改

将原来的全局API转移到应用对象

模板语法变化

  • 创建vue3项目
  1. 使用vue-cli创建

npm install -g @vue/cli

vue create project

  1. 使用vite创建

vite是一个有原生ESM驱动的web开发构建工具。在开发环境基于浏览器原生ES import开发,他做到了本地快速开发启动,在生产环境下基于Rollup打包

npm install -g create-vite-app

npm init vite-app <project-name>

cd <project-name>

npm install

npm run dev

  • Composition API
  1. Composition API(常用部分)
  1. Setup
  1. 新的option,所有的组合API函数都在此使用,只在初始化时执行一次,是组合API的入口函数
  2. 函数如果返回对象,对象中的属性或方法,模板中可以直接使用
  1. ref(是一个函数)
  1. 作用:定义一个数据的响应式,返回的是一个ref对象
  2. 语法:const xxx = ref(initValue)

js中操作数据:xxx.value

模板中操作数据:不需要.value

  1. 一般用来定义一个基本类型的响应式数据
  1. reactive
  1. 作用:定义多个数据的响应式
  2. 语法:const proxy=reactive(obj):接受一个普通对象然后返回该普通对象的响应式代理器对象
  3. 响应式转换是深层的:会影响对象内部所有的嵌套的属性
  4. 内部基于ES6的Proxy实现,通过代理对象操作源对象内部数据都是响应式的
  1. 比较vue2和vue3的响应式(重要)

Vue2的响应式:

  1. 核心:对象:通过defineProperty对对象的已有属性值的读取和修改进行劫持(监视、拦截)

  数组:通过重写数组更新数组一系列更新元素的方法来实现元素修改的劫持

  1. 问题:对象直接新添加的属性或删除已有属性,界面不会自动更新

  直接通过下标替换元素或更新length,界面不会自动更新arr[1]={}

Vue3的响应式

  1. 核心:通过Proxy代理:拦截对data任意属性的任意(13种)操作,包括属性值的读写,属性的添加,属性的删除等...

  通过Reflect反射:动态对被代理对象的相应属性进行特定的操作

  1. setup细节
  1. setup执行的时机:

1、在beforeCreate之前执行一次,此时组件对象还没有创建

2、this是undefined,不能通过this来访问data/computed/methods/props

3、其实所有的composition API相关回调函数中也都不可以

  1. setup的返回值

1、一般都是返回一个对象,内部的属性和方法是给html模板使用的

2、setup返回对象中的属性会与data函数返回对象的属性合并成为组件对象的属性

3、setup返回对象中的方法会与methods中的方法合并成为组件对象的方法

4、Vue3中尽量不要混合使用data和setup及methods和setup(因为methods中可以访问setup提供的属性和方法,但是在setup中不能访问data和methods)

5、setup不能是一个async函数:因为返回值不再是return的对象,而是promise.模板看不到return对象中的属性数据

  1. setup的参数

1、setup(props,context)/setup(props,{attrs,slots,emit})

2、props:是一个对象,里面有父组件向子组件传递的数据,并且是在子组件中使用props接收到的所有属性

3、Context:是一个对象,里面有attrs对象,emit方法,slot对象

4、attrs:获取当前组件标签上的所有属性,但是该属性是在props中没有声明接收的所有对象,相当于this.$attrs

5、slots:包含所有传入的插槽内容的对象,相当于this.$slots

6、emit:用来分发自定义事件的函数,相当于this.$emit

  1. reactive与ref细节
  1. 是vue3的composition API中的2个重要的响应式API
  2. ref用来处理基本类型数据,reactive用来处理对象(递归深度响应式)
  3. 如果用ref对象/数组,内部会自动将对象/数组转换为reactive的Proxy代理对象
  4. ref内部:通过给value属性添加getter/setter来实现对数据的劫持
  5. reactive内部:通过使用Proxy来实现对对象内部所有数据的劫持,并通过Reflect操作对象内部数据
  6. ref的数据操作:在js中要.value,在模板中不需要(内部解析模板时会自动添加.value)
  1. 计算属性与监视
  1. computed函数:

1、与computed配置功能一致

2、只有getter

3、有getter和setter

  1. watch函数

1、与watch配置功能一致

2、监视指定的一个或多个响应式数据,一旦数据变化,就自动执行监听回调

3、默认初始时不执行回调,但可以通过配置immediate为true,来指定初始时立即执行第一次

4、通过配置deep为true,来指定深度监视

  1. watchEffect函数

1、不用直接指定要监视的数据,回调函数中使用的哪些响应式数据就监视哪些响应式数据

2、默认初始时就会执行第一次,从而可以收集需要监视的数据

3、监视数据发生变化时回调

(8)生命周期

  1. 与2.x版本生命周期相对应的组合式API

  1. 新增的钩子函数

组合式API还提供了以下调试钩子函数:onRenderTracked和onRenderTriggered

(9)自定义hook函数

  1. 使用vue3的组合API封装的可复用的功能函数
  2. 自定义hook的作用类似于vue2中的mixin技术
  3. 自定义hook的优势:很清楚复用功能代码的来源,更清楚易懂
  1. toRefs

把一个响应式对象转换成普通对象,该普通对象的每个property都是一个ref

应用:当从合成函数返回响应式对象时,toRefs非常有用,这样消费组件就可以在不丢失响应式的情况下对返回的对象进行分解使用

问题:reactive对象取出的所有属性值都是非响应式的

解决:利用toRefs可以将一个响应式reactive对象的所有原始属性转换为响应式的ref属性

  1. ref获取元素

利用ref函数获取组件中的标签元素

功能需求:让输入框自动获取焦点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3(1) 的相关文章

随机推荐

  • 【吐血整理】java程序员推荐轻薄笔记本

    正文 在写这个文章之前 我花了点时间 自己臆想了一个电商系统 基本上算是麻雀虽小五脏俱全 我今天就用它开刀 一步步剖析 我会讲一下我们可能会接触的技术栈可能不全 但是够用 最后给个学习路线 Tip 请多欣赏一会 每个点看一下 看看什么地方是
  • kali Linux自带firefox ESR设置代理

    1 打开kali的火狐浏览器 找到右上角的 三个杠 在点击 preferences 2 general gt network proxy gt setting 3 打开靶场和burp suite工具 注意火狐浏览器的代理是启动状态 靶场地址
  • 双写绕过的原理

    可以看到代码对key进行了过滤 那怎么办呢 可以构造kekeyy 当key被过滤掉时 剩下的字符自动拼接在一起 就形成了key 所以说 这样就可以拿下flag了
  • 梯度下降(学习笔记)

    应用 梯度下降法 Gradient Descent 又称最速下降法 是迭代法的一种 可用于求解机器学习算法的模型参数 即无约束优化问题 具体来讲可用来求解损失函数的最小值 也可求解最小二乘问题 分类 批量梯度下降 BGD 使用全部样本构建了
  • 职场大佬常用工具:Baklib,一款个人知识笔记管理神器

    又到了大家喜爱的好用工具推荐环节 今天我要给大家推荐一款个人知识笔记管理神器 不出你们所料 它就是Baklib 言归正传那Baklib究竟能干啥呢 引用官网的一句话来说 Baklib工具可以将大家日常工作学习中 存储到电脑 云盘上的文档 知
  • 06makefile学习之三个自动变量($@,$^,$<),模式规则和静态模式规则

    06makefile学习之三个自动变量 lt 和模式规则 以下为相关makefile的学习文章 01makefile学习之GCC编译的四个阶段 带编译阶段 汇编阶段 S c的区别 02makefile学习之makefile的基本原则 03m
  • Oracle存储过程处理大批量数据性能测试

    通过此次的大批量数据性能测试 还会间接的给大家分享一个知识点 Oracle存储过程如何处理List集合的问题 废话不多说了 老规矩直接上代码 首先要做的 想必大家应该猜到了 建表 create table tab 1 id varchar
  • linux内核中打印栈回溯信息 - dump_stack()函数分析

    简介 当内核出现比较严重的错误时 例如发生Oops错误或者内核认为系统运行状态异常 内核就会打印出当前进程的栈回溯信息 其中包含当前执行代码的位置以及相邻的指令 产生错误的原因 关键寄存器的值以及函数调用关系等信息 这些信息对于调试内核错误
  • 使用matlab修改单张或多张图像大小

    使用matlab修改单张或多张图像大小 版权声明 本文为CSDN博主 berlinpand 的原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net berlin
  • 黑马程序员 《ios零基础教程》--全局和局部变量、结构体、枚举 2014-4-2总结

    a href http edu csdn net target self ASP Net Unity开发 a a href http edu csdn net target self Net培训 a 期待与您交流 前几天出差有事儿没学习 今
  • ChatGPT-4.5:AI技术的最新进展

    文章目录 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 OpenAI最新发布的GPT 4 在聊天机器人的功能上取得了显著的改进 虽然GPT 4仍处于早期阶段 但有传言
  • 在阿里云Ubuntu中使用coturn创建和配置您自己的STUN/TURN服务

    1 前言 此前rtsp转webRTC的本地服务运行的不错 但是使用的某个免费stun服务突然被关停了 造成一些rtspToWebRTC的服务受到影响 因此 目前打算在我闲置的阿里云服务器上搭建stun turn服务 我的域名xiaoyaoy
  • openssl的RSA加密(base64编码)

    openssl的RSA加密 base64编码 同AES加密 开头先给出openssl实现base64编码代码 base64编码 解码 Function base64Encode Description base64 编码 Input 1 i
  • Python:pandas groupby实现类似excel中averageifs函数的功能

    从exccel切换到python进行数据处理 处理的主要还是excel的思路 希望实现类似excel中某个函数的功能 日常主要参考蓝鲸的 从excel到python 目前在做一些统计指标 excel中用了countifs sumifs和av
  • VBA学习基础之1.4条件语句

    VBA学习基础之条件语句 1 4 1 If Then 一个if语句由一个布尔表达式和一个或多个语句组成 如果条件被评估为True 则执行If条件块下的语句 如果条件被评估为False 则执行If循环块后面的语句 If boolean exp
  • Leetcode169.多数元素——摩尔投票

    文章目录 引入 摩尔投票 引入 Leetcode上有如下的题 169 多数元素 给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 示例
  • 批量提取PDF和图片发票信息 2.2

    人工录入发票信息真的好烦 有什么软件可以快速解决这个问题吗 那天看到这个问题后 自己写了一个批量提取发票信息的小软件 打开软件之后 选择大量发票文件所在的文件夹就可以了 会自动把发票识别的结果输出为一个Excel 文件 应较多使用者的提议
  • 面试小结

    百度内推一面 1 深浅拷贝 2 const char char const 3 对象的复制拷贝 注意的四个点 初级 高级程序员做法4 介绍项目 5 函数指针 指针函数 6 给定二叉树的前序和中序确定二叉树 前序和后续不能确定 7 SVM分类
  • yum安装dhcp安装包时报错的解决办法([Errno 256] No more mirrors to try.-----或者睡眠中)

    安装环境 CentOS 7 6 问题描述1 报错 无法安装 root localhost yum y install dhcp 已加载插件 fastestmirror langpacks Loading mirror speeds from
  • vue3(1)

    Vue3 0 了解vue3 0 1 简要了解 Vue js 3 0 one Piece 正式版再20年9月份发布 Vue3支持vue2的大多数特性 更好的支持TS 性能提升 打包大小减少41 初次渲染快55 重新渲染快133 内存减少54