vue3笔记

97 阅读3分钟

一、vue的理解

image.png

Vue 是一套渐进式 JavaScript 应用框架,专注于构建用户界面。它的核心思想是数组驱动和组件化。通过将页面拆分成独立的组件,可以更好地管理代码,提高代码的复用性和可维护性。另外,Vue还提供了 Vuex、Vue Router、Axios 等官方插件,可以进一步扩展 Vue 的功能。

渐进式:逐级递增的意思。声明式渲染 => 组件系统 => 客户端路由  => 大规模状态管理 => 构建工具,需要什么功能就在基础上增加(后面是Vue的生态)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:blog.csdn.net/qq_38290251…

image.png

image.png

image.png image.png

二、spa

image.png 缺点:不利于seo;首页加载慢,白屏时间长,由于html里是先执行空div再执行js渲染出内容 优点 :运行后js都加载好了,切换时仅需调用不同的js,性能体验会比较好

三、为什么需要虚拟Dom

需要虚拟DOM的原因:

  1. 框架设计
  • 数据驱动框架,框架设计时,当数据发生变化时,无法做到数据一变就精准定位到某个DOM元素进行更新,能更新的最小颗粒度是组件,在组件中有多个DOM元素,当有数据变化时就去做全量渲染,更新所有真实DOM元素,效率太低了。

  • js层的操作效率高,可以将DOM操作转换成对象操作,最终再通过diff算法对比差异,真实DOM精准更新,减少对真实DOM的操作。

  1. 解耦运行环境
  • 真实DOM只能运行在浏览器环境,这会限制整个vue框架的运行环境,
  • 虚拟DOM的本质是js对象,js对象在各个环境都是可以支持的,
  • 虚拟DOM充当了描述界面的作用,告诉环境界面上有啥,具体要怎么渲染出页面可根据不同的环境做不同的渲染工作
  • 同一套框架的代码可以移植到不同的环境,为后续多端框架提供了一个基础

image.png

四、对组件化的理解

image.png

五、diff+组件级watcher

image.png

六、响应式数据的理解

image.png

七、vue中如何检测数组变化

image.png

八、依赖收集

image.png

image.png

vue2依赖收集: 一个组件在渲染时会创建一个渲染watcher, 在渲染时会调用render方法,而且会把watcher放在全局上(为了可以持续使用),放完后开始页面渲染,会访问一些响应式数据,每个响应式数据会配备一个dep属性,会记住当前在哪个模板中使用,记住当前模块,后面当属性发生变化了可以通过属性对应的dep去通知刚才搜集的watcher重新渲染,这样组件就重新更新了。

image.png

九、Vue.set方法是如何实现的

Vue.set是Vue中用于在对象上设置属性并确保新属性是响应式的方法。

实现步骤:

  1. 开发环境且target 没定义或者是基础类型:报错;
  2. 处理数组情况: 如果目标是数组,并且键是有效的数组索引,使用splice方法添加新元素以保持响应性。
  3. 处理已有属性: 如果属性已经存在于对象中,直接赋值。
  4. 处理vue实例或根数据data:报错
  5. 处理新属性: 如果目标对象不是响应式对象,直接赋值新属性。
  6. 添加响应式新属性: 如果目标对象是响应式的,通过 defineReactive 方法将新属性定义为响应式。这包括定义 getter 和 setter。
  7. 通知依赖更新:调用 ob.dep.notify()通知所有依赖于该对象的 watchers 执行更新。

image.png image.png