Web Service

MVVM框架

2018-11-30  本文已影响0人  陈裔松的技术博客

了解MVVM框架吗?

谈谈你对MVVM的认识?

MVVM的定义

M:Model(服务器上的业务逻辑操作)
V:View(页面)
VM:ViewModel(Model与View之间核心枢纽,比如Vue.js)


微信图片_20181130154445.png
MVC的定义,MVC与MVVM的区别

好文链接:MVC与MVVM的区别

双向绑定是什么意思?

微信图片_20181202104626.png

双向是指ViewModel中的data部分和View之间的双向关系。
正向:数据驱动页面
反向:页面更新数据

绑定是指自动化处理,data改变了view随之改变,反之也是。
不用像传统方式那样,通过onChange事件获取用户输入,然后再通过改变innerHtml修改显示。

双向绑定是什么原理,可以写出来吗?

微信图片_20181202141158.png

双向绑定都是依赖ES5中一个重要的API,Object.defineProperty。

Object.defineProperty()

定义:
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

语法:
Object.defineProperty(obj, prop, descriptor)

参数:
obj:要在其上定义属性的对象。
prop:要定义或修改的属性的名称。
descriptor:将被定义或修改的属性描述符。

返回值:
被传递给函数的对象。

// 这个例子中,把obj对象和input绑定了。
// 当obj的值发生变化时,input框的内容也会自动发生变化
// 当然,input框中的内容发生改变时,只要帮点onChange事件就能改变obj了,不再做演示

<input type="text" id="userInput">

<script>
    // 数据双向绑定
    const obj = {};

    Object.defineProperty(obj, "a", {
        value: 12,
        writable: true,
        enumerable: true,
        configurable: true
    });

    let bValue = 88;
    Object.defineProperty(obj, "b", {
        enumrable: true,
        configurable: true,
        get: function () {
            return bValue;
        },
        set: function (value) {
            bValue = value;

            // 绑定输入框
            const userInput = document.getElementById("userInput");
            userInput.value = value;
        }
    });
</script>

好文链接:理解Object.defineProperty

object.defineProperty()与reflect.defineProperty()的区别

使用了什么设计模式?

微信图片_20181203103556.png

生命周期是什么?

有看过源码吗?

。。。

上一篇下一篇

猜你喜欢

热点阅读