# 读书《深入浅出Vue.js》-4

Vue根据key来判断是不是同一个节点。

vue各个版本  
完整版，编译器和运行时  
编译器：可以把模版字符串编译成js渲染函数  
运行时：除了编译器以外的部分。不能写模版，写渲染方法。  
UMD版本：script src标签可以直接引用的完整版

vue跨平台的原理  
核心方法和全局方法是一样的  
都是与虚拟dom对接  
渲染做了一个中间层封装，浏览器操作dom，小程序调用自己的渲染方法。

  
vm.$forceUpdate()  
强制组件实例刷新，只影响当前组件本身

组件就是vue.js的实例

组件 destroy 过程  
teardown vm.\_watchers  
vm.$off() 移除监听事件  
从父元素中移除该子组件

UI交互属于宏任务

vue中更新dom放在微任务中

wm.\_render()渲染

$mount 作用，把模版渲染到指定的dom元素，并且数据变化时，更新dom

```javascript
_update作用：对比前后的虚拟节点，渲染dom
_render：生成一份新的虚拟节点
```

vue组件不是一个特别的东西，是一个对象，这个对象的data中的数据改变，  
可以更新dom。  
vue组件是vue的子类new出来的对象。

#### vue技巧

* vue技巧v-if等中加key
    
* 通用组件要定义细致的prop
    
* “避免v-if 和v-for 一起使用”
    
    使用computed
    
    把v-if写在v-for的外层
