说一说今天和面试官面聊的MVVM小插曲

308 阅读1分钟

今天面到一个问题,你知道什么设计模式,我开头说观察者模式,因为主要做vue技术栈嘛。

然后我看他面试官表情不对,我猜应该是mvvm,我说了mvvm,然后他让我说一下原理

我按照下面的我画的架构图说了一下,但是感觉面试官表情不对,现在回来我猜他可能不是想问这个,应该是我没get到他的点。他想问的是Vue的双向绑定原理。先吃饭去了,等下回来说这个优点和缺点,下一篇说Vue的双向绑定原理吧。

       Model层:对应数据层的域模型,他主要做域模型的同步,通过Ajax/Fetch等数据访问API完成客户端和服务端业务Model的同步。在层级关系里,他主要用于抽象ViewModel中视图的Model。

      View层:作为视图模板存在,在MVVM里,整个View是一个动态模板。除去定义结构、布局外,他主要展示的是ViewModel层的数据和状态。View层不负责处理状态,只做数据绑定的声明、指令声明、事件绑定的声明。

      ViewModel层:把view想要的数据给暴露出来,并对View层的数据绑定声明、指令声明、事件绑定声明负责,也就是处理View层的具体业务逻辑。ViewModel底层会做好绑定属性的监听。当ViewModel中数据变化,View层就会被通知得到更新;而当View中声明了数据的双向绑定(常是表单元素),框架也会监听View层(表单)值的变化,一旦值变化View层绑定的ViewModel中的数据也会得到自动更新。