vue1源码学习01

137 阅读1分钟
事件 --> 订阅 --> vm

{
    a:1
}
a =2 

vm = {
    // 1. 提供更好看的api
    get a(){

    },  
    $data:{
        get a(){
            // 涉及到  收集
        },
        set a(){
            // 涉及到数据的更新    
            // observe._ctx == vm
            // vm.emit("set","a")
        },
    }
}

// --》 嵌套 
{
    a:{
        b:1
    }
}
a.b = 2

vm = {
    // 1. 提供更好看的api
    get a(){

    },  
    $data:{
        get a(){
            // 涉及到  收集
            return {
                get b(){
                    // 涉及到  收集
                },
                set b(){
                    // 涉及到数据的更新  
                }
            }
        },
        set a(){
            // 涉及到数据的更新    
        },
    }
}


// --- 
{
    a:{
        b:1,
        c:2
    }
}

// a.b = 2
<user :info="a">   --- {{a}}
<user :info="a.b">  --- {{a.b}}
<user :info="a.c">  --- {{a.c}}

// set 两种场景
-. 修改我自身的依赖  -- set
-. 修改我父类的依赖  -- mutate
- 事件流 --> vm

new
-. 编译

运行/js
-. 运行时修改属性/数据/ job的准备

nextTick
-. 渲染



vm = {
    // 1. 提供更好看的api
    get a(){

    },  
    $data:{
        get a(){
            // 涉及到  收集
            return {
                get b(){
                    // 涉及到  收集
                },
                set b(){
                    // 当b 修改时,所有依赖a变化的是否也修改? 
                    // -. 工作 通知a,进行修改  
                    emit("set","b") 
                }
            }
        },
        set a(){
            // 通知到vm
            emit("set","a.b")
            emit("set","a")
        },
    },
    listeners:{
        a(){
            name = key的值
            // a.b产生了修改

            // 涉及到数据的更新    
            // 刷新  
            nextTick() 
        }
    }
}

a.b = 2