項目地址html
其實Vue1和Vue2最大的區別就是Vue2多了一個虛擬DOM,其餘的區別都是很小的。因此理解了Vue1的源碼,就至關於理解了Vue2,中間差了一個虛擬DOM的Diff算法vue
先來科普一下MVVM的概念及原理nginx
mini-vuexgit
// 繼承MiniVue 產生一個新的子類構造函數 MiniVue.extend // 在實例化過程完成後運行 MiniVue.nextTick // 註冊自定義指令 MiniVue.directive // 過濾器 MiniVue.filter // 組件 包括slot props MiniVue.component // 插件 MiniVue.use // 混入 MiniVue.mixin
filters components mixin
vm.$watch vm.$set vm.$delete vm.$on vm.$once vm.$off vm.$emit vm.$nextTick
v-text v-html v-show v-if v-else v-for v-on v-bind v-model
計算屬性用法也和Vue同樣github
init created beforeCompiled compiled destroyed
閱讀源碼要帶有目的去看 不能毫無目的的去看源碼 以避免掉進無盡的細節陷阱中而出不來算法
建議從一個Vue實例化的過程開始 一直跟蹤這條主線 直到結尾爲止(必定要打斷點 debugger 我打了100多個斷點纔看懂主流程) 各類分枝暫時不要管 等把主線理解清楚了 細枝末節天然不在話下sql
在Vue主線裏和數據雙向綁定有關的有如下幾個模塊vuex
咱們來看看他們之間的關係
若是不是想本身實現一個mvvm框架 Vue的源碼不用細讀 只要明白主線的運行過程就好了 想要熟練使用Vue看官方文檔便可
想了解主線流程的 能夠看看個人v0.1版本 300行代碼 完整的實現了雙向數據綁定的流程 還有3條指令的實現過程 其實其餘的指令即便沒實現 也沒什麼關係 主流程明白便可
MiniVue v0.1swift