为什么选择vue3
更强的性能,更好的 tree shaking
Composition API + setup
更好地支持 TypeScript
其composition API很好的解决了逻辑复用的问题,同时解决mixin的短板。
v-deep 替换deep()
Vue.prototype替换为app.config.globalProperties
slot 调整为 v-slot(简写 #slotName)
.sync 替换为 v-model:value
删除 on,on,on,off 和 $once 实例方法,vue3.x不再支持
删除 set()set() set()delete() 方法,vue3.x不再支持
删除 .native使用,vue会自动添加到根元素 ,vue3.x不再支持
删除children,vue3.x不再支持。如果访问子组件实例,建议使用refs。
自定义指令 调整 移除之前的bind、inserted、update等,新增或者替换生命周期如created、beforeMount、updated等
指令:
bind—beforeMounted
inserted----mounted
update、componentUpdate------beforeUpdate、updated
unbind------bforeUnMount、unmounted
不同点:
Vue.config.productionTip作用是是否产生集成环境的各种提示,设置为ture表示生产环境,不再产生提示,减少体积和提示带来的开销。app.config.productionTip = true
/deep/ >>>deep -> ::v-deep -> :global()
filter过滤器不再支持,改为computed和methods方法:
app.config.globalProperties.$format = Format
创建实例,new Vue --> createApp()
挂载方式,$mount() --> mount()
添加全局属性和方法,Vue.prototype --> app.config.globalProperties
Vue3响应式API
reactive:对象类型响应式(Type:object array map set weakmap weakset)
toRefs: 可以通过toRefs返回可解构的reactive,因为toRefs包裹之后返回一一对应的ref属性
toRef:单个的toRefs
ref:普通类型数据的双向绑定,访问时加上.value;(type:number|boolean|undefined|null|string|)
toRaw:返回由 reactive 或 readonly 方法转换成响应式代理的普通对象。这是一个还原方法,可用于临时读取。
markRaw:标记一个数据为永远不会转为响应式代理,函数返回这个对象本身。
shallowReactive:创建浅层的响应式代理,类似浅拷贝深拷贝的概念
shallowRef:只trace不trick【triggerRef用来触发ref的响应式】
customRef:自定义一个 ref,可以显式地控制依赖追踪和触发响应,接受一个工厂函数,两个参数分别是用于追踪的 track 与用于触发响应的 trigger,并返回一个一个带有 get 和 set 属性的对象【实际上就是手动 track追踪 和 trigger触发响应】
watchEffect(), stop()