VUE 的基本原理
一、基本原理当一个 Vue 实例创建时Vue 会遍历 data 中的属性用 Object.defineProperty(vue3.0 使用 proxy) 将它们转为 getter/setter并且在内部追踪相关依赖在属性被访问和修改时通知变化。每个组件实例都有相应的 watcher 程序实例它会在组件渲染的过程中把属性记录为依赖之后当依赖项的 setter 被调用时会通知 watcher 重新计算从而致使它关联的组件得以更新。二、更细致的理解vue 的基本原理也就是响应式原理。Vue 的“响应式”简单说就是数据变了页面自动更新不需要你手动操作 DOM。1. 当 Vue 实例创建时发生了什么Vue 会对 data 对象里的所有属性做“劫持”Vue 2 用Object.defineProperty简称 definePropertyVue 3 用Proxy性能更好这个过程叫数据劫持或响应式转换。2. Object.defineProperty 是怎么工作的Vue 2Vue 遍历 data 对象对每个属性用 defineProperty 改写成getter当你读取这个属性时触发getsetter当你修改这个属性时触发set// 简化版伪代码Vue 内部就是这么做的 function defineReactive(obj, key, val) { Object.defineProperty(obj, key, { enumerable: true, // 可枚举 configurable: true, // 可配置 get() { console.log(读取 ${key}${val}); // Dep依赖收集者 - 记录“谁”在用这个属性 if (Dep.target) { // Dep.target 是当前 Watcher dep.depend(); // 把 Watcher 加到依赖列表 } return val; }, set(newVal) { if (newVal val) return; console.log(修改 ${key}${val} → ${newVal}); val newVal; // 通知更新派发更新 dep.notify(); // 告诉所有依赖这个属性的 Watcher“数据变了快更新” } }); }依赖收集在 get 时把当前正在渲染的组件Watcher记录下来“谁依赖了我”。派发更新在 set 时通知所有依赖它的 Watcher“数据变了去重新渲染吧”。3. Watcher 是什么它怎么工作每个组件都有一个对应的Watcher订阅者组件第一次渲染时会触发所有 data 属性的 get → 收集依赖Dep 收集 Watcher。数据变化时set 触发 → Dep 通知所有 Watcher → Watcher 重新执行渲染函数 → 更新 DOM。一句话Watcher 就是“订阅者”它订阅了 data 的变化数据一变它就重新渲染组件。4. 依赖收集和派发更新的完整流程Vue 2组件渲染 → 访问 data 属性 → 触发 get → Dep 收集当前 Watcher依赖收集。数据修改 → 触发 set → Dep 通知所有 Watcher派发更新。Watcher 收到通知 → 重新执行 render → 生成新 VNode → diff → 更新真实 DOM。5. 总结一句话Vue 的响应式核心是通过数据劫持 发布订阅模式实现的Vue 2 用 Object.defineProperty 劫持属性Vue 3 用 Proxy 劫持对象。在渲染时收集依赖get 时记录 Watcher数据变化时派发更新set 时通知 Watcher 重新渲染实现‘数据变 → 页面自动更新’。

相关新闻

LS-DYNA许可证与作业管理高频技术问题(FAQ)官方解答

LS-DYNA许可证与作业管理高频技术问题(FAQ)官方解答

作为一名长期使用LS-DYNA进行仿真分析的技术使用者,我经常会接到企业客户有关许可证和作业管理方面的咨询。这部分内容看似简单,实则是一个技术系统中非常重要的环节。它不仅影响仿真工作的正常进行,还关系到企业资源的合理分配和项目成本的控…

2026/7/8 4:00:28 阅读更多 →
人员变动时Cadence许可证快速调整策略

人员变动时Cadence许可证快速调整策略

在半导体行业从事设计工作的工程师,经常会遇到一个非常棘手的问题:当设计团队成员发生变动时,如何快速调整Cadence许可证,确保新成员能够顺利使用工具,同时避免许可证资源浪费以及影响项目进度? 这是很多企…

2026/7/6 4:48:14 阅读更多 →
d3dcompiler_47.dll缺失怎么修复 免费下载文件方法分享

d3dcompiler_47.dll缺失怎么修复 免费下载文件方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/8 22:24:53 阅读更多 →

最新新闻

紧急预警:ChatGPT 4-turbo在金融合规问答中存在3类未披露幻觉模式,而Gemini Flash已通过银保监会AI模型备案——附可复现测试用例集

紧急预警:ChatGPT 4-turbo在金融合规问答中存在3类未披露幻觉模式,而Gemini Flash已通过银保监会AI模型备案——附可复现测试用例集

更多请点击: https://codechina.net 第一章:紧急预警:ChatGPT 4-turbo在金融合规问答中存在3类未披露幻觉模式,而Gemini Flash已通过银保监会AI模型备案——附可复现测试用例集 三类高危幻觉模式实证发现 我们在银保监会《金融大…

2026/7/9 3:44:39 阅读更多 →
2026 成人用眼舒缓科普,日常如何缓解长时间用眼干涩疲劳

2026 成人用眼舒缓科普,日常如何缓解长时间用眼干涩疲劳

屏幕前的读者,无论您是每天紧盯代码的程序员、报表不断的金融分析师,还是重度依赖电子设备的远程工作者,本文旨在解决一个共性问题:如何在2026年眼花缭乱的护眼市场中,找到一套安全、长效、可落地的用眼舒缓方案。本文…

2026/7/9 3:44:39 阅读更多 →
新疆螺纹钢厂家怎么挑才靠谱

新疆螺纹钢厂家怎么挑才靠谱

在新疆的建筑工地上,螺纹钢作为钢筋混凝土结构的“骨架”,其质量直接决定了建筑的安全性和耐久性。无论是高层住宅、工业厂房,还是基础设施项目,选对螺纹钢厂家,无异于为工程系上了“安全带”。本文将从行业从业者的视…

2026/7/9 3:42:39 阅读更多 →
PHP RCE 漏洞防御:基于CTFHub 6道题目的3层安全编码实践

PHP RCE 漏洞防御:基于CTFHub 6道题目的3层安全编码实践

PHP RCE 漏洞防御:基于CTFHub 6道题目的3层安全编码实践在当今的Web应用安全领域,远程代码执行(RCE)漏洞无疑是最危险的安全威胁之一。这类漏洞一旦被利用,攻击者可以直接在服务器上执行任意命令,导致数据泄露、服务器被控制等严重…

2026/7/9 3:42:39 阅读更多 →
ChatGPT 4.0 科研论文润色实战:3个Prompt优化段落结构与学术表达

ChatGPT 4.0 科研论文润色实战:3个Prompt优化段落结构与学术表达

ChatGPT 4.0 科研论文润色实战:3个Prompt优化段落结构与学术表达 在学术写作中,语言表达的精确性和段落结构的逻辑性往往决定着论文的成败。许多研究者虽然掌握了扎实的专业知识,却苦于无法将研究成果以符合学术规范的方式呈现。本文将分享三…

2026/7/9 3:38:38 阅读更多 →
太多AI生成的图片以假乱真,这款免费的AI图像检测工具你了解吗?

太多AI生成的图片以假乱真,这款免费的AI图像检测工具你了解吗?

这两年,很多人应该都有同一种感受:网上的图片,越来越难一眼看出真假了。比如这样的图片你能分辨出是AI生成的吗? 再比如说AI生成的人物照片,不使用专业的AI工具进行检测,是不是很难判断出是AI生成的&#x…

2026/7/9 3:38:38 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻