架构

作者: 未来在奋斗 | 来源:发表于2019-12-15 11:08 被阅读0次

    MVC架构

    • M 层 ( Model ) 模型
    • V 层 ( View ) 视图
    • C 层 ( Controller ) 控制器
    <input type="text" id="input1" autocomplete="off">
    <span id="span1"></span>
    <script>
        var M = {
            a : "",
            set( v ){
                M.a = v;
                V.render();
            },
            get(){
                return M.a;
            }
        }
    
        var V = {
            init(){
                input1.onkeyup = C.keyup;
            },
            render(){
                span1.innerHTML = M.get();
            }
        }
    
        var C = {
            keyup(){
                M.set( this.value )
            }
        }
        
        V.init();
    
    </script>
    

    MVP架构

    • M 层 ( Model ) 模型
    • V 层 ( View ) 视图
    • P 层 ( Presenter ) 主持人
    <input type="text" id="input1" autocomplete="off">
    <span id="span1"></span>
    <script>
        var M = {
            a : "",
            set( v ){
                M.a = v;
                P.render();
            },
            get(){
                return M.a;
            }
        }
    
        var V = {
            init(){
                input1.onkeyup = P.keyup;
            },
            render(){
                span1.innerHTML = P.get();
            }
        }
    
        var P = {
            keyup(){
                M.set( this.value );
            },
            render(){
                V.render();
            },
            get(){
                return M.get();
            }
        }
        
        V.init();
    
    </script>
    

    MVVM架构

    • M 层 ( Model ) 模型
    • V 层 ( View ) 视图
    • VM 层 ( View Model ) 视图模型

    数据绑定原理

    Object.defineProperty

    <input type="text" id="input1" autocomplete="off">
    <span id="span1"></span>
    <script>
        var M = {
            a : ""
        }
        var V = {
    
        }
        var VM = {
            init(){
                input1.onkeyup = function(){
                    M.a = this.value;                
                }
                VM.observer(M, "a");
            },
            observer(obj, attr){
                var val = obj[attr];
                Object.defineProperty(obj, attr, {
                    get(){
                        return val;
                    },
                    set( v ){
                        input1.value = span1.innerHTML = val = v;
                    }
                })
            }
        }
    
        VM.init();
    </script>
    

    相关文章

      网友评论

          本文标题:架构

          本文链接:https://www.haomeiwen.com/subject/bwbrnctx.html