Vue 原理相关

董俊豪
2022-03-17 / 0 评论 / 0 点赞 / 635 阅读 / 738 字
温馨提示:
本文最后更新于 2022-03-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

vue runtime.js + compiler
Object.defineProperty只能劫持对象的属性,而Proxy是直接代理对象
vue2 重写数组方法,通过下标修改属性值或者修改数组长度,并不能生效,可通过splice或$set操作监听到数据变化

原理区别:proxy、模板解析、diff算法、typescript、依赖收集、懒代理

vue3 基于typescript编写,模板解析用状态机制编译,diff算法用动态规划求最长递归子序列,整体体积更小,速度更快,生命周期调整,
proxy响应式拦截对象,静态标记 按需更新,ssr,长列表
对象则使用 Object.assign 方法,直接赋值监听

this.watchObj = Object.assign({}, this.watchObj, {
  name: 'junhao',
  age: 6,
});

用法上区别: 数据、生命周期、watcheffect、插槽写法
vue3支持多跟节点,用createApp,attrs不用先声明,包含对象和事件
Vue3中的反应数据(Reactive Data)是包含在一个反应状态(Reactive State)变量中。需要访问这个反应状态来获取数据值:state.username
reactive()方法来声名我们的数据为反应性数据:reactive({
username: '',
})

reactivity 数据响应系统
runtime-core 与浏览器无关的运行时(虚拟dom vueComponent、vueApi)
runtime-dom 浏览器运行时
runtime-test
server-render
template-explore
compiler-core 与平台无关
compiler-dom 浏览器而言的编译器
watchEffect

0

评论区