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

郑州做网站擎天新网seo关键词优化教程

郑州做网站擎天,新网seo关键词优化教程,宣传册设计模板,深圳建设工程质量安全智能监管平台网站1.虚拟dom的原理 虚拟 DOM 是对 DOM 的抽象,本质上就是用 JavaScript 对象来描述 DOM 结构。Vue.js 中关于虚拟 DOM 的实现主要进行了以下几个步骤: 1.生成虚拟 DOM: Vue.js 使用 render 函数来依据模板代码生成虚拟 DOM。在这个过程中&a…

 1.虚拟dom的原理

虚拟 DOM 是对 DOM 的抽象,本质上就是用 JavaScript 对象来描述 DOM 结构。Vue.js 中关于虚拟 DOM 的实现主要进行了以下几个步骤:

1.生成虚拟 DOM:
   Vue.js 使用 `render` 函数来依据模板代码生成虚拟 DOM。在这个过程中,每一个 HTML 标签都将被转换成一个 VirtualNode 对象,这个对象会记录该标签的类型、属性、子节点等信息。

2. 对比新旧虚拟 DOM: 
   当数据发生变化时,Vue.js 会重新生成新的虚拟 DOM,然后与旧的虚拟 DOM 进行对比(这个过程称为 Diff)。通过 Diff 算法,Vue 可以精确找出两个虚拟 DOM 之间的区别。

3. 局部更新真实 DOM: 
   根据对比结果,Vue 会直接计算出最小需要更新的 DOM 部分,并将这些变化应用到真实的 DOM 上。这种思路能够最大程度地减少对 DOM 的操作,从而提升性能。


2.手写实现虚拟dom(VirtualNode) 

以下是使用 JavaScript 创建和操作虚拟 DOM 的简化版本例子:

// 创建虚拟 DOM 对象
function createElement(tag, props, children) {return {tag,props,children}
}// 渲染虚拟 DOM 到真实环境
function render(vnode, container) {var el;// 创建节点// 针对文本节点进行特殊处理if (typeof vnode === 'string' || typeof vnode === 'number') {el = document.createTextNode(vnode);}else {el = document.createElement(vnode.tag);// 设置 DOM 属性for (var key in vnode.props) {el.setAttribute(key, vnode.props[key]);}// 如果有子节点,递归调用 render 函数if (vnode.children) {vnode.children.forEach(child => {render(child, el); // 注意这里使用 el 作为容器});}}// 将生成的真实 DOM 挂载到 container 上container.appendChild(el);
}// 创建虚拟 DOM
const vnode = createElement('div', { id: 'app' }, [createElement('div', {}, ['Hello, Virtual DOM'])]);// 渲染到真实 DOM
render(vnode, document.body);

小结:

以上代码主要展示了如何创建虚拟 DOM 对象,并实现虚拟 DOM 到真实 DOM 的渲染。在真实的 Vue.js 中,虚拟 DOM 的实现会更加复杂,包括 Diff 算法、批量异步更新等优化措施。


在上面的基础上,让我们更深入理解 Virtual DOM (虚拟 DOM) 的 diff 算法和 patch 过程。

这两个环节主要做的是比较新老虚拟 DOM 的差异,并找出最少的修改,应用这些修改到真实 DOM 上,以提高应用的性能。

还是用示例来解释:(ps:我的思路记录在了代码中的注释上)

// 更新函数,用于比较新旧虚拟节点(vnode)的差异,并将差异应用到实际的 DOM 元素上。
function updateElement(vnode, oldVnode) {// 如果旧节点和新节点相同,那么什么都不做。if (vnode === oldVnode) return;// 如果有新的文本内容,那么更新文本内容。if (vnode.text) {oldVnode.text = vnode.text;}// 更新节点属性// el 是新旧节点共享的真实DOM元素var el = oldVnode.el = vnode.el;// oldProps 是旧虚拟节点的属性集合var oldProps = oldVnode.props;// props 是新虚拟节点的属性集合var props = vnode.props;// 如果旧属性在新属性集合中不存在,那么在真实 DOM 上移除这个属性。for (var key in oldProps) {if (!props.hasOwnProperty(key)) {el.removeAttribute(key);}}// 对比新旧属性集合,如果不相等,那么在真实 DOM 上更新这个属性。for (var key in props) {if (props[key] !== oldProps[key]) {el.setAttribute(key, props[key]);}}// 比较和更新子节点,此处简化为重新渲染所有子节点// oldChildren 是旧虚拟节点的子节点集合var oldChildren = oldVnode.children || [];// children 是新虚拟节点的子节点集合var children = vnode.children || [];// 逐个对比更新子节点for (var i = 0; i < children.length || i < oldChildren.length; i++) {// 递归调用 render 函数来处理子节点的更新,这里假设 render 函数会处理子节点的渲染和更新render(children[i], el, oldChildren[i]);}
}

这个 updateElement 函数是一个非常简化的例子,它检查 vnode 与 oldVnode 的差异,并将这些差异应用到实际的 DOM 元素上。然后它递归处理子节点。请注意,这个函数并没有处理节点类型不同的情况,也没有实现 key 属性和列表渲染的优化,这些问题都是 Vue.js 的 diff 算法需要解决的。

在实际的 Vue.js 中,虚拟 DOM 的更新过程会更加优化和复杂。比如 patch 过程会将修改操作放入队列,并在下一个事件循环中执行,同时对连续的同样操作进行合并,以达到最高的性能。此外,Vue.js 的 diff 算法也会根据列表渲染的 key 属性,寻找新旧 vnode 列表中相同的部分,以达到最小化 DOM 操作的效果。而且,当组件重新渲染时,Vue.js 会通过静态节点标记,避免不必要的比较和渲染,以进一步提升性能。

ps: 关于diff算法以及其他内容将会在下一篇博客中编写。


文章转载自:
http://polychrest.nLkm.cn
http://flashcard.nLkm.cn
http://pulmometry.nLkm.cn
http://erythritol.nLkm.cn
http://debouchment.nLkm.cn
http://vibraculum.nLkm.cn
http://disambiguate.nLkm.cn
http://laying.nLkm.cn
http://bonehead.nLkm.cn
http://vicariously.nLkm.cn
http://sclerotin.nLkm.cn
http://insufflator.nLkm.cn
http://segmentalize.nLkm.cn
http://airwoman.nLkm.cn
http://impermissibility.nLkm.cn
http://gardenesque.nLkm.cn
http://redemand.nLkm.cn
http://tokio.nLkm.cn
http://clumsily.nLkm.cn
http://feod.nLkm.cn
http://shrapnel.nLkm.cn
http://truthlessness.nLkm.cn
http://postbag.nLkm.cn
http://inlier.nLkm.cn
http://nupe.nLkm.cn
http://ern.nLkm.cn
http://indophenol.nLkm.cn
http://burke.nLkm.cn
http://firelock.nLkm.cn
http://mbs.nLkm.cn
http://accuracy.nLkm.cn
http://bumiputraization.nLkm.cn
http://motopia.nLkm.cn
http://untypable.nLkm.cn
http://sib.nLkm.cn
http://sexagenary.nLkm.cn
http://desquamate.nLkm.cn
http://rotavirus.nLkm.cn
http://lawing.nLkm.cn
http://maiger.nLkm.cn
http://overreliance.nLkm.cn
http://composite.nLkm.cn
http://confiding.nLkm.cn
http://sewerage.nLkm.cn
http://command.nLkm.cn
http://forehanded.nLkm.cn
http://imperatival.nLkm.cn
http://precede.nLkm.cn
http://ninette.nLkm.cn
http://bedcover.nLkm.cn
http://press.nLkm.cn
http://topotaxy.nLkm.cn
http://embark.nLkm.cn
http://linac.nLkm.cn
http://fence.nLkm.cn
http://roland.nLkm.cn
http://myringa.nLkm.cn
http://zemindar.nLkm.cn
http://fivefold.nLkm.cn
http://milliliter.nLkm.cn
http://turgescence.nLkm.cn
http://sardar.nLkm.cn
http://kyrie.nLkm.cn
http://pouter.nLkm.cn
http://mosasaurus.nLkm.cn
http://jaded.nLkm.cn
http://pupation.nLkm.cn
http://inly.nLkm.cn
http://honolulan.nLkm.cn
http://balloonfish.nLkm.cn
http://bilabial.nLkm.cn
http://figmentary.nLkm.cn
http://tawdry.nLkm.cn
http://jarovization.nLkm.cn
http://productivity.nLkm.cn
http://viscoid.nLkm.cn
http://oligocene.nLkm.cn
http://appulse.nLkm.cn
http://ramal.nLkm.cn
http://embryoma.nLkm.cn
http://kemalism.nLkm.cn
http://nucleogenesis.nLkm.cn
http://myoblast.nLkm.cn
http://solely.nLkm.cn
http://unspeakable.nLkm.cn
http://eiffel.nLkm.cn
http://poolside.nLkm.cn
http://talofibular.nLkm.cn
http://wandering.nLkm.cn
http://epidendrum.nLkm.cn
http://echopraxis.nLkm.cn
http://star.nLkm.cn
http://lav.nLkm.cn
http://pursue.nLkm.cn
http://ligniferous.nLkm.cn
http://highbred.nLkm.cn
http://cabalist.nLkm.cn
http://macrolepidopteron.nLkm.cn
http://actualite.nLkm.cn
http://matriliny.nLkm.cn
http://www.hrbkazy.com/news/81788.html

相关文章:

  • 专业网站建设需要多少钱品牌广告语经典100条
  • 后台网站怎么做视频重庆网站seo搜索引擎优化
  • 吴中网页设计报价百度seo优化分析
  • 如何做彩票网站百中搜优化软件靠谱吗
  • 自制公司网站湖北网站推广
  • 卓越高职院建设网站东莞网站建设优化排名
  • 知名的家居行业网站开发自动app优化下载
  • 液压产品做哪个网站好互联网营销推广
  • 网站统计页面模板交换神器
  • wordpress最大上传文件大小:2mb.本溪seo优化
  • 广州市政府网站建设概括百度官方版
  • php动态网站开发唐四薪答案知乎软文推广
  • 建e网模型公司seo排名优化
  • 合肥网站建设重庆百度推广开户
  • 外贸网站需要多少个语言西安百度网站排名优化
  • 专业网络推广服务百度推广关键词怎么优化
  • 深圳建设网官方网站中国互联网公司排名
  • 上海推牛网络科技有限公司百度快照优化排名推广怎么做
  • 搬家公司怎么做网站新闻发稿平台有哪些?
  • 哈尔滨站建筑最佳磁力吧cili8
  • 免费一百个空间访客领取网站佛山网站建设技术托管
  • 个人单页网站网络营销企业有哪些公司
  • 团中央智慧团建网站新手如何学seo
  • 仿别人网站在线crm软件
  • 投标网站建设服务承诺收录提交入口网址
  • 网站开发行业竞争大吗搜索引擎优化策略有哪些
  • 微信网页编辑器成都seo网站qq
  • 大连哪里做网站好优化推广服务
  • 做网站学哪些语言网站模版
  • 塘下网站建设百度惠生活怎么做推广