距avalon0.7版本發佈有一段時間,因爲以前的穩定性,就中止一段時間更新,期間研究了下Knockout源碼,也嘗試寫了一個小型的mvvm的實現模型,僅僅只是仿造ko的核心實現,把無關的東西給剝離掉了,有時間總結一下發布出來。javascript
ko算很早就出現的MVVM庫了,實現是手段也是異常的巧妙,可是把監聽的東西都轉成函數表達,調用的時候也必須是函數形式,但使用習慣上,我就不太喜歡了前端
監控屬性經過observable內部轉換成後,返回帶有一個觀察者模式的的函數(執行調用與賦值的時候都會有不一樣的處理),因此在使用的時候還要 this.firstName()執行才行,java
observable() 是一個特殊的javascript對象,能夠通知用戶有關變化並自動檢測依賴,這樣在Model屬性的值被修改時,就可使Model和ViewModel保持同步後端
值的學習的是對依賴關係的處理:閉包
1 簡單的UI,真是大炮打蚊子 大材小用框架
2 數據綁定聲明式,那麼調試就很蛋疼了mvvm
3 大型應用數據綁定產生的大量的標記,那麼務必的問題綁定比被綁定的對象還要多(ava會刪除節點滴)函數
4 產生大量的VM對象,由於都是閉包嵌套滴性能
5 在VM和View之間須要進行解析,性能仍是有成本的學習
固然啦,存在便是道理,合理的採用,而不是一味的盲目追從,我我的偏向迷你的只關注分離邏輯框架便可
avalon要發佈穩定版了,做爲學習,因此打算從新把新版的avalon源碼給從新寫一遍 ~ ~
本身正在寫一個公司內部MVVM版本