Vue3是Vue.js框架的最新版本;
新特性:Composition API、Teleport、Suspense、Fragment、v-memo(用于缓存html模版,对于不会变化的v-for列表,可以使用v-memo进行缓存,以提高性能)等;
2、Vue3的Composition API是什么,它的作用是什么?
Vue3 Composition API是Vue3中的一个新特性;
作用:将组件中的逻辑分解成可复用的可组合函数,通过使用Composition API可以更好地组织代码和管理状态;
Vue3中的teleport是控制渲染位置的新指令;
作用:是在Dom中移动一个组件的内容而不改变组件的父级;
Vue3中的Suspense是Vue3中新增的一个组件;
作用:实现延迟加载和错误处理,在组件中加入Suspense,可以让异步组件可以渲染出加载状态,并且如果异步组件加载时出现错误,也能够处理这些错误;
Vue3中的Fragment是用来承载多个子元素的虚拟组件;
作用:可以解决在Vue2中,使用v-for迭代元素时需要添加一个包装元素的问题;
响应式系统是Vue中的核心概念之一,它允许在状态发生变化时更新视图;
Vue3中的响应式系统更新包括Proxy、Reflect、WeakMap等;
Vue3中使用<component>元素和v-bind:is 属性来实现动态组件;
如:<component v-bind:is="XXXXXXX"></component>
Vue3中使用import()来异步加载组件;
Vue3中使用<slot name="slot-name"></slot>来实现插槽;
在父组件中使用<template v-slot:slot-name></template>来填充插槽;
Vue3中使用app.directive()方法来注册指令;
如:app.directive('focus',{mounted(el){el.focus()}})
Vue3使用app.mixin()方法来注册混入;
如:app.mixin({created(){console.log('mixin created')}})
Vue3使用h()函数来创建虚拟节点;
如:h('div',{class:'container'},'hello')
使用WeakMap来处理循环引用问题;
Vue3使用provide()和inject()函数来实现全局状态管理;
Vue3中的ref指令可以用来在组件内部获取子组件的实例,也可以用来获取DOM元素或者其他组件的实例;
初始化组件、创建响应式数据(ref、reactive)、使用生命周期钩子函数(onMounted、onUpdated)、返回渲染数据
Vue3中的setup()函数是用来代替Vue2中的data、methods、computed等选项的,它可以用来创建响应式数据和添加需要在模版中使用的方法;
性能
Vue3:提供了更高的性能,实现了更快的渲染速度和更小的打包体积;
Vue2:虽然性能相对较好,但与Vue3相比,它的体积较大,渲染速度较慢;
响应式系统
Vue3:使用Proxy实现响应式系统,可以直接监听对象属性的变化。而不需要通过getter和setter,这样可以提供更好的性能和更少的内存占用;
Vue2:使用Object.defineProperty方法实现响应式系统;
组合式API
Vue3:引入了Composition API,它允许开发者更灵活地组合和使用组件逻辑,尤其是在负责组件中,可以更好地组织和重用代码;
Vue2:主要使用Options API 其中组件的逻辑被组织在data、methods、computed、watch选项中;
模版和JSX
Vue3:提供了对JSX的支持,通过setup语法,可以更加简洁地编写组件;
Vue2:使用基于html的模版语法,虽然简单易用,但对于需要编写类型安全代码的开发者来说,可能不如JSX直观;
类型支持
Vue3:更好地支持TS,提供了更多的类型安全特性;
Vue2:也支持TS,但在Vue3中对TS的支持更为全面和集成;
我认为最重要的变化是组合式API,带来了抽提逻辑复用逻辑的便利;原来都是面向对象,Vue3整个的面向过程;
composition API、响应式系统优化、异步组件、静态提升和动态更新、列表渲染优化、事件监听优化、代码分割和懒加载、tree-shaking、保持更新、性能监控
Mixin和Hooks都是为了提高代码的复用性和可读性,Mixin以对象的方式进行定义和应用,而Hooks则使用函数式编程的方式,Hooks比Mixin更加灵活、可组合和易于维护,提供了更清晰和可读性更高的组件逻辑。
Vue2使用的是Object.defineProperty()进行数据劫持,结合发布订阅的方式实现;
Vue3使用的是Proxy代理,使用ref或者reactive将数据转化为响应式数据;
Vue3中生命周期函数已经过一些修改和扩展,特别是引入了一个新的钩子函数setup(),它用于代替Vue2中的beforeCreate和created钩子;
setup:这是在组件实例创建之前执行的函数;
onBeforeMount:组件挂载到节点上之前执行的函数;
onMounted:组件挂载完成后执行的函数;
onUpdated:组件更新完成之后执行的函数,因数据更改导致的虚拟DOM重新渲染和打补丁时调用;
onBeforeUnmount:组件卸载之前执行的函数;
onUnmounted:组件卸载完成后执行的函数;(比如:取消订阅事件、销毁定时器)
onActivated:被包含在<keep-alive>中的组件,当组件被激活时执行;
onDeactivated:被包含在<keep-alive>中的组件,当组件从活动状态变为非活动状态的执行;
本文详细介绍了Vue3的新特性,包括Composition API、Teleport、Suspense、Fragment等,阐述它们的作用和使用场景。Vue3通过响应式系统升级、动态组件、异步组件加载、插槽实现以及自定义指令等方式,提升了性能和开发体验。同时,对比Vue2,Vue3在组合式API、模板和JSX、响应式系统以及类型支持上有了显著改进。
1272

被折叠的 条评论
为什么被折叠?



