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

制作网站公司首 荐乐云seo专家wordpress权限设置

制作网站公司首 荐乐云seo专家,wordpress权限设置,四川建设网招标网,wordpress短代码图片1、diff算法是什么#xff1f; diff算法是一种通过同层的树节点进行比较的高效算法。 其有两个特点#xff1a; 比较只会在同层级进行#xff0c;不会跨层级进行。 在diff比较的过程中#xff0c;循环从两边向中间比较。 diff算法在很多场景中都有应用#xff0c;在vue中 diff算法是一种通过同层的树节点进行比较的高效算法。 其有两个特点 比较只会在同层级进行不会跨层级进行。 在diff比较的过程中循环从两边向中间比较。 diff算法在很多场景中都有应用在vue中作用于虚拟Dom渲染成真实dom的新旧Vnode节点比较 2、比较方式 diff整体策略为深度优先同层比较 1比较只会在同层级进行不会跨层级比较 2比较的过程中循环从两边向中间收拢。 下面举一个vue通过diff算法更新的例子。 新旧vnode节点如下图所示 第一次循环后发现旧节点D与新节点D相同直接复用旧节点D作为diff后的第一个真实节点同时旧节点endIndex移动到C新节点的startIndex移动到C。 第二次循环后同样是旧节点的末尾和新节点的开头相同节点C同理diff后创建了C的真实节点插入到第一次创建的D节点后面同时旧节点的endIndex移动到了B新节点的startIndex移动到了E。 第三次循环中发现E没有找到这时候只能直接创建新的真实节点E插入到第二次创建的C节点之后。同时新节点的startIndex移动到了A,旧节点的startIndex和endIndex都保持不动。 第四次循环中发现了新旧节点的开头相同都是A于是diff后创建了A的真实节点插入到前一次创建的E节点后面。同时旧节点的startIndex移动到了B新节点的startIndex移动到了B。 第五次循环中与第四次循环一样因此diff后创建了B真实节点插入到前一次创建的A节点后面。同时旧节点的startIndex移动到了C新节点的startIndex移动到了F。 新节点的startIndex已经大于endIndex了需要创建newStartIdx和newEndIdx之间的所有节点也就是节点F直接创建节点F对应的真实节点放到B节点后面。 3、原理分析 当数据发生改变时set方法会调用Dep.notify通知所有订阅者Watcher订阅者就会调用patch给真实的DOM打补丁更新相应的视图。 源码位置/src/core/vdom/patch.js patch函数前两个参数位为oldVnode和Vnode分别代表新的节点和之前旧的节点主要是做了4个判断。 没有新节点直接触发旧节点的destory钩子 没有旧节点说明是页面刚开始初始化的时候此时根本不需要比较直接全是新建所以调用createElm 旧节点和新节点自身一样通过saveVnode判断节点是否一样一样时直接调用patchVndoe去处理这两个节点 旧节点和新节点自身不一样当两个节点不一样时直接创建新节点删除旧节点。 下面分析下patchVnode部分 patchVnode主要做了以下几个判断 新节点是否为文本节点如果是则直接更新dom的文本内容为新节点的文本内容 新节点和旧节点如果都有子节点则处理比较更新子节点 只有新节点有子节点旧节点没有那就不用比较了所有节点都是全新的所以直接全部新建就好了新建是指创建出所有新的DOM,并且添加进父节点 只有旧节点有子节点新节点没有说明更新后的页面旧节点全部都不见了那么要做的就是把所有旧节点删除也就是直接把DOM删除 子节点不完全一致则调用updateChildren while主要是处理了以下5个场景 当新老Vnode节点的start相同时直接patchVndoe同时新老Vnode节点的开始所以都加1 当新老Vnode节点的end相同时同样直接patchVnode同时新老Vnode节点的结束所以都减1 当老节点Vndoe的start和新Vnode节点的end相同时这时候patchVndoe后还需要将当前真实dom节点移动到oldEndVnode的后面同时老Vnode节点开始索引加1新Vnode节点的结束所以减1 当老Vnode节点的end和新Vnode节点的start相同时这时候patchVnode后还需要将当前真实dom节点移动到oldStartVnode的前面同时老Vnode节点结束索引减1新Vnode节点的开始索引加1 如果都不满足上述4种情况那说明没有相同的节点可以复用则会分为以下两种情况。 从旧的Vnode为key的值对应index序列为value值的哈希表中找到与newStartVnode一致key的旧的Vnode节点再进行patchVndoe同时将这个真实dom移动到oldStartVnode对应的真实dom的前面 调用createElm创建一个新的Dom节点放到当前newStartIdx的位置。 4、小结 当数据发生改变时订阅者watcher就会调用patch给真实的dom打补丁 通过isSameVNode进行判断相同则调用patchVnode方法 patchVnode做了以下操作 找到对应的真实dom称为el 如果都有文本节点且不相等将el文本节点设置为Vnode的文本节点 如果oldVnode有子节点而Vnode没有则删除el子节点 如果oldVnode没有子节点而Vnode有则将Vnode的子节点真实化后添加到el 如果两者都有子节点则执行updateChildren函数比较子节点 updateChildren主要进行以下操作 设置新旧Vnode的头尾指针 新旧头尾指针进行比较循环向中间靠拢根据情况调用patchVnode进行patch重复流程调用createElem创建一个新节点从哈希表寻找key一致的Vnode节点再分情况操作。
http://www.hkea.cn/news/14345965/

相关文章:

  • 网站开发学那种语言建材企业网站营销怎么做
  • 婚恋网站如何做推广云平台网站建设方案书
  • 大型网站 div工信部网站备案电话
  • 学做网站 为了熊掌号怎么做单位网站
  • 平面设计广告网站建站前seo注意
  • 余姚网站建设百度制作企业网站多少钱
  • 家居企业网站建设案例重庆网页设计学校
  • 做外贸仿牌网站手机可以开发网站
  • 蜜雪冰城网站建设策划方案医疗网站建设
  • 服装企业网站建设策划书网站建设技术方案模板
  • 网站分享插件怎么做固原网站建设公司
  • 网站建设包括哪些项目wordpress 获取栏目
  • 餐饮品牌网站建设满屋花网页设计代码
  • 吉林省建设安全信息网站成都企业网站建设
  • 万能视频解析接口网站怎么做wordpress网站下载文件
  • 网站建设过程总结报告房产微信营销方案
  • 淄博营销型网站建设不使用域名做网站
  • c 开发手机网站开发大厂做网站shijuewang
  • 合肥做网站的公司有哪些网站开发搜索功能怎么实现
  • 网站建设计划方案模板下载快速建站免费软仿
  • 网站开发 软件开发人人商城网站开发
  • seo百度站长工具查询网站的标题符号
  • 中小企业网站建设教程淮南百姓网
  • 网站经营wordpress图文安装
  • 花都区营销型网站建设个旧做网站哪家公司好
  • 建设广告网站需要资质吗做网站怎样赚到钱
  • 筹划电子商务网站建设吉安市建设局施工管理站网站
  • 织梦网站建设实训心得建网站要花多少钱
  • 整站优化网站wordpress不能绑定qq
  • 深圳集团网站开发网站开发公司电话法制教育网站