## 前言

MVVM的常见问题:

- 如何理解MVVM

- 如何实现MVVM

- 是否解读过Vue的源码


题目:

- 说一下使用 jQuery 和使用框架的区别


- 说一下对 MVVM 的理解


- vue 中如何实现响应式


- vue 中如何解析模板

- vue 的整个实现流程



## 说一下使用 jQuery 和使用框架的区别




## MVVM / Vue


## MVVM模式

- Model:负责数据存储

- View:负责页面展示

- View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示

数据驱动视图,只关心数据变化,DOM操作被封装。

### MVVM / Vue的三要素

- **响应式**:vue 如何监听到 data 的每个属性变化?

- **模板引擎**:vue 的模板如何被解析,指令如何处理?


- **渲染**:vue 的模板如何被渲染成 html ?以及渲染过程



### 什么是虚拟 DOM

传统的web开发,是利用 jQuery操作DOM,这是非常耗资源的。

我们可以在 JS 的内存里构建类似于DOM的对象,去拼装数据,拼装完整后,把数据整体解析,一次性插入到html里去。这就形成了虚拟 DOM。


Vue1.0没有虚拟DOM,Vue2.0改成了基于虚拟DOM。


### 如何理解MVC

C指的是Controller。控制器能够控制视图的变化,也能控制数据的变化。

单项通信。一般情况下是:view 发出命令给控制器,控制器处理业务逻辑后控制 Model,Model再去改 view。


## hybrid

### 使用场景

不是所有的场景都适合用 hybrid:

- 使用原生应用:体验要求极致,变化不频繁(如头条的首页)

- 使用 hybrid:体验要求高,变化频繁(如新闻详情页)

- 使用H5:体验无要求、不常用(比举报、反馈等)