前言
极度投入,深度沉迷,边界清晰
前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待探讨点可随便评论,与各位同学一起学习~
欢送关注
『前端进阶圈』
公众号 ,一起摸索学习前端技术......公众号回复
加群
或扫码
, 即可退出前端交流学习群,长期交流学习......公众号回复
加好友
,即可添加为好友
热点面试题:Virtual DOM 相干问题?
什么是 Virtual DOM?
- VDOM 是对实在 DOM 的一种映射,自身是一个 JS 对象,蕴含了标签名(tag), 属性(attrs),子元素(children)。
VDOM 是如何批改实在 DOM?
- VDOM 是与实在 DOM 的 JS 对象,如果扭转了某个元素的状态,首先会在 VDOM 上进行扭转,而不是间接去操作实在 DOM,当有新的批改产生时,新的 VDOM 与 旧的 VDOM 进行比拟失去差别,而后将差别映射到实在 DOM 上,达到批改实在 DOM 的成果。
VDOM 如何生成?如何成为实在 DOM?
- vue 中通过模板编译器(template compiler) 编译为渲染函数(render), 在挂载(mount) 过程中调用渲染函数(render),此时返回的对象就是 VDOM。但这并不是实在 DOM,要通过 patchVnode() 办法转换为实在 DOM。
Vue 中为什么要才应用 VDOM?
- 为理解耦 HTML 的依赖,不在依赖 HTML compiler 进行模板编译
- VDOM 更缩小不必要的重绘和回流
- 解决 View 与 Status 的同步问题
- VDOM 的跟踪变动
- 进步我的项目的可维护性
- VDM 把渲染过程抽象化了,使组件的形象能力失去的晋升
- 可跨平台:SSR, Weex,同构渲染
VDOM 的中 diff 算法?
- 次要实现办法是:递归 + 双指针
- 在前端中,很少存在跨层级挪动 DOM Element, 所以 VDOM 只会对同一个层级的元素进行比对,才应用深度优先遍历的办法,来记录差别。
VDOM 的作用是什么?
- 保护 View 和 Status 的状态
- 能在简单的状况下晋升 Rendering Performance
跨平台(Cross Platform)
- 浏览器端渲染 DOM
- 服务端渲染 SSR:Nuxt.js,Next.js
- 原生利用:Weex,React native
- 小程序:mpvue,uni-app
VDOM 的长处?
- 无效缩小实在 DOM 的操作次数,进步性能
- VDOM 不会引起回流和重绘
- 不便跨平台
VDOM 的毛病?
- 无奈进行极致优化
- 在首次 render 大量 DOM 时,多了一层 VDOM 的计算
对于 VDOM 的库?
Snabbdom
- vue2 内用的 VDOM 就是革新后 Sanbbdom
- 可通过模块进行开发
- 应用 TypeScript 开发
- 最快的 VDOM 之一
- virtual-dom
文章特殊字符形容:
- 问题标注
Q(question)
- 答案标注
R(result)
- 注意事项规范:
A:(attention matters)
- 详情形容标注:
D:(detail info)
- 总结标注:
S:(summary)
- 剖析标注:
Ana:(analysis)
- 提醒标注:
T:(tips)
往期回顾:
- 热点面试题:过程系列问题?
- 热点面试题:Node.js 中的垃圾回收机制?
- 热点面试题:简述 http3.0~http1.0 别离有什么改良?
- JavaScript中的AMD和CMD标准
- Vue数据监听Object.definedProperty()办法的实现
最初:
- 欢送关注
『前端进阶圈』
公众号 ,一起摸索学习前端技术...... - 公众号回复
加群
或扫码
, 即可退出前端交流学习群,长期交流学习...... - 公众号回复
加好友
,即可添加为好友