自己在深入研究vue的源碼及其各種原理的時候,有太多的問題和疑惑。在網上看了一篇關于介紹Watcher的文章。因此,我將Watcher分類放在開始部分進行講解。
Watcher分類
---------
#### 內部-watcher
vue組件上的每一條數據綁定指令(例如`{{myData}}`)和computed屬性,通過compile最后都會生成一個對應的 watcher 對象。
#### user--watcher
在watch屬性中,由用戶自己定義的,都屬于這種類型,即只要監聽的屬性改變了,都會觸發定義好的回調函數
#### render-watcher
每一個組件都會有一個 render-watcher, `function () {vm._update(vm._render(), hydrating);}`, 當 data / computed中的屬性改變的時候,會調用該 render-watcher 來更新組件的視圖
------------------------------------------------
#### 三種 watcher 的執行順序
watcher 也有固定的執行順序,分別是:
> 內部-watcher -> user-watcher -> render-watcher
優先執行內部watcher是為了保證指令和DOM節點的優先更新,這樣當用戶自定義的Wathcer的回調函數觸發時DOM已經更新完畢。