Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue3核心知识

Vue3核心知识

原创
作者头像
李才哥
发布于 2023-06-27 00:26:32
发布于 2023-06-27 00:26:32
3000
举报
文章被收录于专栏:李才哥李才哥

Vue3核心知识

简介

1.性能的提升

打包大小减少41%。

初次渲染快55%, 更新渲染快133%。

内存减少54%。

2.源码的升级

使用Proxy代替defineProperty实现响应式。

重写虚拟DOM的实现和Tree-Shaking。

3.拥抱TypeScript

Vue3可以更好的支持TypeScript。

4.新的特性

Composition API(组合API)

一些新的内置组件

创建工程

基于 vue-cli 创建(不推荐)

基于 vite 创建(推荐)

轻量快速的热重载(HMR),能实现极速的服务启动。

对 TypeScript、JSX、CSS 等支持开箱即用。

真正的按需编译,不再等待整个应用编译完成。

API风格

创建app

创建app:Vue.createApp( )

挂载应用:app.mount( )

定义组件:defineComponent

OptionsAPI 与 CompositionAPI

Options API 的弊端

  • 每个功能的:数据、方法、计算属性等,是分散在:data、methods、computed配置中的,若想新增或者修改一个需求,就需要分别修改:data、methods、computed,不便于代码的维护和复用。

Composition API 的优势

  • 可以用函数的方式,更加优雅的组织代码,让相关功能的代码更加有序的组织在一起。

setup

setup

setup是什么

  • 是Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。

setup的特点

  • setup函数返回的对象中的内容,可直接在模板中使用。
  • setup中访问this是undefined。
  • setup函数会在beforeCreate之前调用,它是“领先”所有钩子执行的。

setup的参数

  • props
  • context

• attrs • 一个响应式的属性对象,包含传递给组件的非声明属性。这可以用来处理父组件传递的未在组件中声明的属性。 • slots • 一个插槽函数的对象,可以用来访问组件的插槽内容。 • emit • 一个用于触发自定义事件的函数。可以使用它来在组件内部触发事件,并将数据传递给父组件。 • refs • 一个包含了组件内声明的所有ref对象的属性对象。可以通过refs来访问和修改ref对象的值。

setup的返回值

  • 对象

• 对象中的:属性、方法等,在模板中均可以直接使用(重点关注)。

  • 函数

• 返回一个模板,可以自定义渲染内容,代码如下(用的不多)。

与Options API的关系

  • Vue2 的配置(data、methos......)中可以访问到 setup中的属性、方法。
  • 但在setup中不能访问到Vue2的配置(data、methos......)。
  • 如果与Vue2冲突,则setup优先。

setup语法糖

响应式数据

ref

基本类型

  • let name = ref('张三')

对象类型

  • let car = ref({ name:'奔驰' ,price:'50W'})

reactive

对象类型

  • let car = reactive({ name:'奔驰' ,price:'50W'})

ref 对比 reactive

ref

  • ● 用来定义:基本类型数据、对象类型数据。
  • ● 若定义对象类型数据,它内部会自动通过reactive实现响应式。
  • ● JS中操作数据需要.value,模板中可以直接读取不需要.value。

reactive

  • ● 用来定义:对象类型数据。
  • ● 无论JS中还是模板中,均不需要.value。

使用原则:

  • ● 若需要一个基本类型的响应式数据,必须使用ref。
  • ● 若需要一个响应式对象,层级不深,那么使用ref也可以。
  • ● 若需要一个响应式对象,且层级较深,要深度跟踪,那么使用reactive。

计算与监视

computed

//引入computedimport {computed} from 'vue'//创建一个计算属性let fullName = computed({})

watch

明确:Vue3中的watch只能监视四种数据

  • 1. ref对象。
  • 2. 响应式对象(reactive定义的对象)。
  • 3. 函数返回一个值。
  • 4. 一个包含上述内容的数组。

情况一

  • 监视ref定义的【基本类型】数据,则默认监视的就是value值。

情况二

  • 监视reactive定义的【响应式对象】,注意点有:

• 默认开启了深度监视。 • newValue和oldValue都是新值。

情况三

  • 监视reactive定义的【响应式对象】中的某个数据,注意有:

• 1. 若该属性值是依然是【响应式对象】,直接编写即可,且默认开启深度监视。 • 2. 若该属性值不是【响应式对象】,需要写成函数形式,且默认关闭深度监视。 • 3. newValue和oldValue都是新值。

情况四

  • 监视ref定义的【对象类型】数据,注意点如下:

• 1. 直接写对象,监视的是对象的地址值,若想监视对象内部的数据,要手动开启深度监视。 • 2. 写对象.value,监视的是对象内部的数据(响应式对象),深度监视自动开启。

情况五

  • 监视上述的多个数据

对比Vue2和Vue3响应式原理

Vue2的响应式

核心原理

  • ○ 对象: 通过Object.defineProperty对已有属性值的读取、修改进行劫持(监视/拦截)。
  • ○ 数组: 通过重写数组的7个变更方法,来实现元素修改的劫持。

存在的问题

  • ○ 对象中后添加的属性、或删除已有属性, 界面不会自动更新。
  • ○ 直接通过下标替换、添加元素, 界面不会自动更新。

Vue3的响应式

核心原理:

  • ○ 通过Proxy拦截对data任意属性的任意操作, 包括属性值的读写, 属性的添加, 属性的删除等。
  • ○ 通过 Reflect动态对代理对象的相应属性进行特定的操作。
  • 备注:MDN相关文档

• Proxy • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy • Reflect • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect

自定义hooks

什么是hook?

本质是一个函数,把setup函数中使用的Composition API进行了封装,类似于vue2.x中的mixin。

自定义hook的优势

复用代码, 让setup中的逻辑更清楚易懂。

props

新的接收方式(配合TS)

生命周期的改变

Vue2

Vue3

● 有两个被更名:

○ beforeDestroy改名为 beforeUnmount

○ destroyed改名为 unmounted

新的组件

Teleport

在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中

Fragment

eleport 是一种能够将我们的组件html结构移动到指定位置的技术。

Suspense

等待异步组件时渲染一些额外内容,让应用有更好的用户体验

其他

全局API转移到应用对象

● app.component()

● app.config()

● app.directive()

● app.mount()

● app.unmount()

● app.use()

data选项应始终被声明为一个函数

移除keyCode支持作为 v-on 的修饰符

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
❤️[前端学习]大数据全栈工程师之一文快速上手vue3❤️
大家好,我是ChinaManor,直译过来就是中国码农的意思,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。暑假给自己在家附近找了份实习,作为初级码农,啥都得懂点,于
Maynor
2021/08/25
1.6K0
vue3知识点:reactive对比ref
答案:请看官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
刘大猫
2024/10/31
1340
Vue3学习笔记
①性能的提升 打包大小减少41%、初次渲染快55%,更新渲染快133%,内存减少54%…… ②源码的升级
玖柒的小窝
2021/09/29
8840
Vue3学习笔记
vue3知识点:ref函数
答案:请看官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
刘大猫
2024/10/31
2740
vue3知识点:Vue3.0中的响应式原理和 vue2.x的响应式
答案:请看官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
刘大猫
2024/10/31
1320
升级 Vue3 大幅提升开发运行效率
作者:louiszhai,腾讯 IEG 前端开发工程师 Vue3 性能提升了 1.3~2 倍,SSR 性能提升了 2~3 倍,升级 Vue3 正是当下。 背景 原计划 2019 年发布的 Vue3,又经过一年的再次打磨,终于于去年 9 月正式发布。随后,不少 UI 组件库都积极参与适配,去年 12 月,Element-plus(Element-ui 官方升级版)也发布了 beta 版。 由于项目中用到了 Element-ui 组件,组件库未适配的情况下,不敢贸然升级 Vue3。Element-plus
腾讯技术工程官方号
2021/04/27
2K0
vue3知识点:setup
答案:请看官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
刘大猫
2024/10/31
1350
[科普文] Vue3 到底更新了什么?
Vue3 已经发布一段时间了,这个版本从底层实现到上层 API 设计都发生了非常大的变化,但具体改变了些什么呢?一起简单盘点下:
Tecvan
2022/03/31
1.1K0
[科普文] Vue3 到底更新了什么?
Vue3基础
官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create
六个周
2022/10/28
1K0
Vue3基础
再遇vue之vue3新特性
首先说明一下,vue2和vue3是Vue.js的两个主要版本。目前vue3已经更新到3.3.4的版本了
用户6297767
2023/11/21
5640
再遇vue之vue3新特性
基于 Vue3 和 TS4 项目大量实践后的总结
Vue3出来已经有一段时间了,在团队中,也进行了大量的业务实践,也有了一些自己的思考。
落落落洛克
2021/12/01
6230
vue3知识点:reactive函数
答案:请看官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
刘大猫
2024/10/31
1710
vue3笔记1 组件配置API
vue2中的数据,计算属性,方法,生命周期钩子等都可以在setup函数中构造 setup函数返回:
路过君
2022/04/13
4120
Vue3 学习笔记 —— (一)深入理解组合式 API
Vue3 是向下兼容 Vue2 API 的,但是 Vue3 中提供了一种全新的 Composition API
Gorit
2021/12/08
7620
Vue3 学习笔记 —— (一)深入理解组合式 API
Vue3 中有哪些值得深究的知识点?
众所周知,前端技术一直更新很快,这不 vue3 也问世这么久了,今天就来给大家分享下vue3中值得注意的知识点。喜欢的话建议收藏,点个关注!
玖柒的小窝
2021/12/07
1.1K0
Vue3 中有哪些值得深究的知识点?
Vue3学习笔记 —— Composition API 快速入门
对比 Vue2 中 OPTIONS API,data 和 methods 的定义如下所示
Gorit
2021/12/08
5480
Vue3学习笔记 —— Composition API 快速入门
Vue3学习笔记(二)——组合式API(Composition API)
官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html
张果
2022/10/31
4.5K0
Vue3学习笔记(二)——组合式API(Composition API)
一口气复习完 Vue3 相关基础知识点
看完你就基本可以上手搞开发了,本文适合Vue初学者,或者Vue2迁移者,当然还是建议Vue3官网完全过一遍。不适合精通原理,源码的大佬们。
前端达人
2021/09/09
2.3K0
一口气复习完 Vue3 相关基础知识点
vue3简易入门剖析
,发音同 “veet”)是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:
张哥编程
2024/12/13
4570
【初学者笔记】整理的一些Vue3知识点
拒绝标题党,哈哈哈,看完你就基本可以上手搞开发了,本文适合Vue初学者,或者Vue2迁移者,当然还是建议Vue3官网完全过一遍。不适合精通原理,源码的大佬们。
一尾流莺
2022/12/10
2.4K0
【初学者笔记】整理的一些Vue3知识点
相关推荐
❤️[前端学习]大数据全栈工程师之一文快速上手vue3❤️
更多 >
LV.2
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档