vue-虚拟DOM理解

    1.性能损耗原理
 var box = document.querySelector('.box') ;
    console.time('temp')
        var num = 1 ;
        var _num = 1 ;
        box.innerHTML = num ;
        for( var i = 0 ; i < 10000 ; i++ ){
            var box = document.querySelector('.box') ;
            _num  ++  ;
            box.innerHTML = _num ;
        }
    console.timeEnd('temp')  // 80
        console.time('temp')
            var num = 0 ;
            for( var i = 0 ; i <= 10000 ; i++ ){
                ++num ;
            }
            box.innerHTML = num ;
        console.timeEnd('temp') //0.8
    2.虚拟DOM的使用
<body>
    <div class="box">
       <div class="content">
           <ul class="list">

           </ul>
           <p>
                2
           </p>
       </div>
    </div>
</body>
<script>
1.生成DOM树
 var vDom = {
            tag:'div',
            attr:{
                className:'box'
            },
            content:[
                {
                    tag:'div',
                    attr:{
                        className:'content'
                    },
                    content:[
                        {
                            tag:'ul',
                            attr:{
                                className:'list'
                            }
                        },
                        {
                            tag:'p',
                            content:2
                        }
                    ]
                }
            ]
        }
2.页面渲染
var data = []
3.改变数据
data.push('zsq')
data.push('zsq')
data.push('zsq')
4.重新生成DOM树 
var vDom = {
                tag:'div',
                attr:{
                    className:'box'
                },
                content:[
                    {
                        tag:'div',
                        attr:{
                            className:'content'
                        },
                        content:[
                            {
                                tag:'ul',
                                attr:{
                                    className:'list'
                                },
                                content:[
                                    {
                                        tag:'li',
                                        content:'zsq'
                                    },
                                    {
                                        tag:'li',
                                        content:'zsq'
                                    },
                                    {
                                        tag:'li',
                                        content:'zsq'
                                    }
                                ]
                            },
                            {
                                tag:'p',
                                content:2
                            }
                        ]
                    }
                ]
            }
5. 将两次的vDom进行对比,发现有不同的地方
6. 根据(diff算法) 将不同的渲染出来,一样的地方不做任何改变 

增强训练查阅diff的用法
1.用来比较两个文本文件之间的差异
$diff<"变动前文本"><"变动后文本">

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,076评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,862评论 2 59
  • 如果你爱上我 就请你离开我 我想保持一个人单身的生活 如果你爱上我 就请你远离我 我想保持一个人流浪的折磨 如果你...
    我是王爷王爷小王爷阅读 252评论 0 1
  • 重写 继承后,子类可以拥有除父类继承的内容以外的其他的内容 关于方法1).在子类中可以直接添加其他的方法2).重写...
    慢节拍_2709阅读 264评论 0 3
  • 其实,我不是流浪狗,我只是一只被妈妈弄丢了的小孩。妈妈,你在哪里?宝宝想你,你快来啊! 妈妈去医院...
    菜好青阅读 884评论 1 3