当前位置: 首页 > wzjs >正文

织梦网站建设视频网上售卖平台有哪些

织梦网站建设视频,网上售卖平台有哪些,网站底部导航代码,网站开发交流Vue 3 的响应式系统与 Vue 2 有显著不同,Vue 3 使用了 Proxy 替代了 Vue 2 中的 Object.defineProperty,这使得 Vue 3 的响应式系统更加灵活和强大 Vue 3 响应式原理的核心 Proxy: Vue 3 使用 Proxy 来拦截对象的操作(如读取、赋值…

Vue 3 的响应式系统与 Vue 2 有显著不同,Vue 3 使用了 Proxy 替代了 Vue 2 中的 Object.defineProperty,这使得 Vue 3 的响应式系统更加灵活和强大


Vue 3 响应式原理的核心

  1. Proxy

    • Vue 3 使用 Proxy 来拦截对象的操作(如读取、赋值、删除等)。
    • Proxy 可以监听整个对象,而不需要像 Object.defineProperty 那样递归遍历每个属性。
  2. Reflect

    • Reflect 是一个内置对象,提供了与 Proxy 拦截操作对应的方法。
    • Vue 3 使用 Reflect 来执行默认行为(如读取属性值、设置属性值等)。
  3. 依赖收集与派发更新

    • Vue 3 仍然使用依赖收集和派发更新的机制,但实现方式更加简洁。
    • 通过 effect 函数(类似于 Vue 2 的 watchEffect)来追踪依赖。

简单实现 Vue 3 响应式系统

以下是一个简化版的 Vue 3 响应式系统实现:

// 存储当前正在执行的 effect 函数
let activeEffect = null;// 依赖收集器
class Dep {constructor() {this.subscribers = new Set();}depend() {if (activeEffect) {this.subscribers.add(activeEffect);}}notify() {this.subscribers.forEach(effect => effect());}
}// 创建响应式对象
function reactive(obj) {return new Proxy(obj, {get(target, key, receiver) {const dep = getDep(target, key);dep.depend(); // 依赖收集return Reflect.get(target, key, receiver);},set(target, key, value, receiver) {const dep = getDep(target, key);const result = Reflect.set(target, key, value, receiver);dep.notify(); // 派发更新return result;}});
}// 存储每个对象的每个 key 对应的 Dep 实例
const targetMap = new WeakMap();function getDep(target, key) {let depsMap = targetMap.get(target);if (!depsMap) {depsMap = new Map();targetMap.set(target, depsMap);}let dep = depsMap.get(key);if (!dep) {dep = new Dep();depsMap.set(key, dep);}return dep;
}// effect 函数,用于追踪依赖
function effect(fn) {activeEffect = fn;fn(); // 执行函数,触发 getter,收集依赖activeEffect = null;
}// 测试
const state = reactive({ count: 0, list: [1, 2, 3] });effect(() => {console.log('Count:', state.count);
});effect(() => {console.log('List:', state.list);
});state.count++; // 输出: Count: 1
state.list.push(4); // 输出: List: [1, 2, 3, 4]

代码解析

  1. reactive 函数

    • 使用 Proxy 包装对象,拦截 getset 操作。
    • get 中调用 dep.depend() 收集依赖。
    • set 中调用 dep.notify() 派发更新。
  2. Dep

    • 用于存储依赖(effect 函数)。
    • 提供 depend 方法收集依赖,notify 方法派发更新。
  3. effect 函数

    • 类似于 Vue 2 的 watchEffect,用于执行副作用函数并追踪依赖。
    • 在执行过程中,activeEffect 会被设置为当前函数,从而在 get 中被收集。
  4. targetMapgetDep

    • targetMap 是一个 WeakMap,用于存储每个对象及其对应的 depsMap
    • depsMap 是一个 Map,用于存储每个 key 对应的 Dep 实例。
    • getDep 函数用于获取或创建 Dep 实例。

Vue 3 的优势

  1. 更好的性能

    • Proxy 可以监听整个对象,而不需要递归遍历每个属性。
    • 只有在访问属性时才会创建 Dep,减少了初始化开销。
  2. 更强大的功能

    • Proxy 可以拦截更多操作,如 deletePropertyhas 等。
    • 支持数组的 pushpop 等操作,无需额外处理。
  3. 更简洁的代码

    • 依赖收集和派发更新的逻辑更加清晰和集中。

总结

Vue 3 的响应式系统基于 ProxyReflect,相比 Vue 2 的 Object.defineProperty,具有更好的性能和更强大的功能。通过 effect 函数追踪依赖,Dep 类管理依赖,Proxy 拦截操作,Vue 3 实现了一个高效且灵活的响应式系统。简化版的 Vue 3 的核心原理。

http://www.dtcms.com/wzjs/77141.html

相关文章:

  • 做网站的代码难吗网站视频播放代码
  • 那个网站做图片好看百度问答首页
  • 做国际贸易哪个网站好找谁做百度关键词排名
  • 网页网站公司如何做备份市场营销策略有哪4种
  • 天津做网站营销神器
  • 阜康网站建设2022年最好用的搜索引擎
  • 免费网站空间 推荐接广告的平台
  • 深圳市住房建设与保障局官方网站百度服务中心人工客服
  • 南通学校网站建设推广方案模板
  • 苏州知名网站制作公司朔州网站seo
  • ui网站开发报价抖音引流推广免费软件app
  • 西安建设学院网站首页中国搜索引擎市场份额
  • 做网站能创业吗seo服务加盟
  • 台州网站建设网站推广2022黄页全国各行业
  • 做网站的广告语公众号软文范例100
  • 网站开发流程原理济南网站优化排名
  • 上海网站建设服务公司网页设计制作网站
  • 商标查询天眼查杭州网站优化企业
  • 南山做网站方案网站排名优化怎样做
  • 地产项目网站凡科建站下载
  • wordpress多站点demo新手小白怎么学做运营
  • 淮南网备查询百度竞价关键词怎么优化
  • php做的网站后台惠州网站营销推广
  • 作文网站网址大全百度网页版
  • 那些开店的网站是自己做的吗东莞网站制作外包
  • 如何在百度建立自己的网站今天刚刚发生的新闻台湾新闻
  • 菏泽去哪了做网站qq营销
  • 美国成年做爰网站网络营销方法有什么
  • 做网站商标分类做网页多少钱一个页面
  • 宝安区建设交易网站搜狗网站收录提交入口