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

如何看别人网站用什么做的手机黄山网站

如何看别人网站用什么做的,手机黄山网站,做细分行业信息网站,电脑网页设计目录 核心概念 响应式效果的实现 依赖收集的具体流程 为什么使用全局变量? 嵌套 effect 的处理 总结 Vue3 的响应式系统核心在于跟踪依赖并在数据变化时触发更新。effect.ts文件实现了这一机制的核心部分,下面我们来梳理其中的关键思路。 核心概念…

目录

核心概念

响应式效果的实现

依赖收集的具体流程

为什么使用全局变量?

嵌套 effect 的处理

总结


Vue3 的响应式系统核心在于跟踪依赖并在数据变化时触发更新。effect.ts文件实现了这一机制的核心部分,下面我们来梳理其中的关键思路。

核心概念

// 创建一个响应式对象 effect
export function effect(fn, options: any = {}) {// 创建一个 effect 只要依赖的属性变化,就会重新执行const _effect = new ReactiveEffect(fn, () => {_effect.run();});// 执行_effect.run();
}export let activeEffect; // 当前的 effect

响应式效果的实现

ReactiveEffect

类是整个响应式系统的核心,它负责:

  1. 存储用户传入的回调函数
  2. 提供执行机制
  3. 处理嵌套 effect 的情况
class ReactiveEffect {/*** fn 是用户传入的回调函数「如果fn中依赖了响应式数据,当数据变化后,会重新调用scheduler -->run」* scheduler 是调度器*/public active = true; //默认是响应式的constructor(public fn, public scheduler) {}run() {// 如果当前状态是停止的,执行后,啥都不做if (!this.active) {return this.fn();}/***     effect(() => {console.log(state.name);effect(() => {console.log(state.name);})console.log(state.age);})执行前,保存当前的 activeEffect 可以理解为 「栈」执行完后,恢复上一次的 activeEffect*/let lastEffect = activeEffect;try {activeEffect = this; // 当前的 effect 「依赖收集」return this.fn(); //依赖收集 「state.name ,state.age」} finally {activeEffect = lastEffect; // 执行完毕后 恢复上一次的 activeEffect}}
}

activeEffect 是一个全局变量,它的核心作用是:标记当前正在执行的 effect。这是依赖收集的关键环节,让系统知道"当前访问的属性应该与哪个 effect 建立联系"

依赖收集的具体流程

让我们通过一个具体的例子来理解这个过程:

const state = reactive({ name: 'zhang', age: 18 });effect(() => {console.log(state.name); // 访问 name 属性
});

当这段代码执行时,发生了以下步骤: 

  1. 调用 effect 函数,创建一个 ReactiveEffect 实例
  2. 调用 _effect.run()
  3. 在 run 方法中,将 activeEffect 设置为当前 effect 实例
  4. 执行用户传入的回调函数 fn()
  5. 在回调函数中访问 state.name
  6. 访问属性触发 Proxy 的 get 捕获器
  7. get 捕获器调用 track 函数
get(target: any, key: any, receiver: any) {// ...track(target, key);return Reflect.get(target, key, receiver);
}

track 函数检查 activeEffect 是否存在,如果存在,就建立依赖关系

export function track(target, key) {if (activeEffect) {console.log(activeEffect, key);// 这里应该建立 target[key] 和 activeEffect 的映射关系}
}

为什么使用全局变量?

使用全局变量activeEffect的好处是:

  1. 简化 API 设计,用户不需要手动指定依赖关系
  2. 自动追踪运行时的依赖,只收集真正访问的属性
  3. 支持动态依赖收集,依赖可以根据条件变化

嵌套 effect 的处理

Vue3 巧妙地处理了嵌套 effect 的情况,通过维护当前活跃的 effect 和保存上一个 effect 的方式:

effect(() => {console.log(state.name);  // 外层 effect 依赖 state.nameeffect(() => {console.log(state.name);  // 内层 effect 依赖 state.name})console.log(state.age);  // 外层 effect 还依赖 state.age
})

当处理嵌套 effect 时,代码会:

  • 保存当前的 activeEffect 到 lastEffect 变量
  • 将 activeEffect 设置为当前执行的 effect
  • 执行完毕后,恢复 activeEffect 为之前保存的值
  • 这就像一个栈结构,确保每个属性访问都能正确关联到当前正在执行的 effect。

总结

Vue3 响应式系统的核心在于:

  1. 通过  effect 函数创建响应式效
  2. 果使用 ReactiveEffect类管理回调函数和执行逻辑
  3. 通过  activeEffect 全局变量跟踪当前正在执行的 effect
  4. 在属性访问时进行依赖收集
  5. 在属性设置时触发相关 effect 重新执行

Vue3 响应式系统通过activeEffect 全局变量巧妙地解决了"谁在使用这个属性"的问题,实现了自动依赖收集。当访问响应式对象的属性时,系统知道是哪个 effect 正在运行,从而建立属性与 effect 之间的映射关系,为后续的响应式更新奠定基础。


文章转载自:

http://U7lWCg6s.thjpf.cn
http://tMFClKHN.thjpf.cn
http://W3eChjpg.thjpf.cn
http://0sAUa5qJ.thjpf.cn
http://wN8TThZJ.thjpf.cn
http://4asV3J8b.thjpf.cn
http://m1ZfYXCT.thjpf.cn
http://3kgSoSrn.thjpf.cn
http://v6rze9Th.thjpf.cn
http://3QPrsesU.thjpf.cn
http://AfGqolb4.thjpf.cn
http://sQFEBJjR.thjpf.cn
http://bAB0AIMR.thjpf.cn
http://fJI993A0.thjpf.cn
http://qkwPpbHj.thjpf.cn
http://SLMjSRUi.thjpf.cn
http://IlD8rzyE.thjpf.cn
http://Is8uhmgZ.thjpf.cn
http://cIiGwsCc.thjpf.cn
http://CxC76kig.thjpf.cn
http://pxsfvBUZ.thjpf.cn
http://Uhct36M2.thjpf.cn
http://kbEiaY5B.thjpf.cn
http://klHD1yMt.thjpf.cn
http://pTyoteq6.thjpf.cn
http://kuhZbxMw.thjpf.cn
http://OKu4UwiG.thjpf.cn
http://LfIOp9o2.thjpf.cn
http://Z7AdBuFy.thjpf.cn
http://QIZ7ExmP.thjpf.cn
http://www.dtcms.com/wzjs/739934.html

相关文章:

  • 宝安新桥h5网站建设步骤微信公众平台小程序怎么制作
  • 手机做任务佣金的网站wordpress导入演示卡主
  • 提供手机网站建设推荐做订阅号要建立网站吗
  • 个人网站备案后可以做行业内容吗中建八局第一建设有限公司电话
  • 网站开发课程内部培训中企高呈网站建设
  • 杭州网站推广优化哪里好会搭建网站找什么工作室
  • 甜点的网站建设规划书做网站下载那个数据库好
  • 网站建设uuiop伪原创php网站镜像同步程序
  • 做网站的数据库的设计怎么制作游戏辅助
  • 静安广州网站建设初中毕业想学设计上哪个学校
  • 建设自己公司的网站网站软文设计
  • 网站建设规划建议制作公司网站的流程
  • 加大网站集约化建设管理建材招商网站
  • 毕节城乡建设局网站字体安装+wordpress
  • 免费上线个人网站如何提高网站百度权重
  • 网站如何在百度做排名辽宁工程监督
  • vue做购物网站flat movie wordpress
  • 2017年做那个网站致富html静态网页制作代码免费
  • 南靖县建设局网站网站建设的要素
  • 代理网站建设公司学院的网站建设的意义
  • 红安县建设局网站江苏无锡今天的最新发布消息
  • 云南网站备案查询凡科互动小游戏
  • 学校网站建设设计方案网站如何推广行业
  • 成都网站建设是什么意思为什么大家用wordpress建网站
  • 网站增加keywords关键词有影响吗做网站需要什么技术人员
  • 中国建设执业资格注册中心网站wordpress 换主题
  • 网站开发人员工资计入无形资产找项目网
  • 郑州学校网站建设教育视频培训网站建设
  • iis5.1怎么新建网站如何用VS2017做网站
  • 西安优化网站公司wordpress themes 目录