avalon2.2 發佈

通過avalon2.0.*avalon2.1.*這30多個小版本的迭代,avalon終於實現本身一套html parser, 虛擬DOM系統與兩個數組的精緻diff算法,再結合mobx的一些源碼閱讀所得,終於催生了avalon2.2。html

avalon2.2是一個里程碑的版本,模塊所有使用es6 module方式,並儘量使用es6的語法來編寫。使用rollup進行打包,所以如今avalon2兼容IE6的版本只要7300行代碼。avalon2現代版本(IE10+)只要6300行。avalon兼容IE6的版本,強化兼容支持,其用到的VBScript代碼進一步優化,並重寫全部測試。avalon現代版本,則直接容許使用Proxy實現VM。這是第一個使用Proxy作監聽的MVVM框架!react

  • fix IE6-8 opacity BUGgit

  • 減小VM的系統屬性,__const__, __data__,__proxy__,$skipArray被廢掉es6

  • vmodel模塊所有重寫,讓它內部用到的私用方法更加合理github

  • directives模塊所有重寫,由於如今不走react的渲染模板思路了算法

  • component模塊所有重寫,它如今是徹底獨立的做用域,可能與這前的有一點不兼容。不過,這對維護組件自身的狀態很是有利。chrome

  • watch再也不支持*號數組

  • strategy模塊被打散了,細分爲parser與renders與vtree這三個模塊。renders裏面有domRender與serverRender。瀏覽器

  • vdom模塊,虛擬DOM轉真實DOM時,對低版本瀏覽器的支持更好。框架

avalon2.2最大的優勢體如今如下幾處:

  • 直接開啓Proxy監聽時代,它比Object.defineProperty更爲神通廣大,所需代碼更少。

  • 依賴收集與依賴追蹤更完美。早期沒有依賴追蹤,只會第一次將指令轉換爲視圖刷新函數時肯定VM屬性與視圖元素的依賴關係,若是裏面存在三目運算符,if else時就會有些依賴沒有收集到。依賴追蹤保證依賴關係是最新的,當不存在依賴時,就會銷耗該屬性背後的一系列對象,垃圾回收。

  • 組件機制臻於完美,獨立的VM,6個生命週期鉤子,長駐機制。

  • 重寫全部測試,基於jasmine與istanbul與karma,所有跑通IE6-11,firefox, chrome, safari與phantomjs

項目地址: https://github.com/RubyLouvre...

相關文章
相關標籤/搜索