迷你MVVM架構 avalonjs 1.3.7發布

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   os   使用   sp   

又到每個月的15號了,現在avalon已經固定在每個月的15號發布新版本。這次發布又帶來許多新特性,讓大家寫碼更加輕鬆,藉助於“操作資料即操作DOM”的核心理念與雙向繫結機制,現在越來越多人加入到avalon的陣營中來。此外,基於avalon的UI庫OniUI也越來越強大,很快,樹組件也開發完畢,下星期也與大家見面了。到時,OniUI也有兩個Grid組件,一個樹組件的完整UI庫。與本次發布的UI還有驗證組件,mask組件,百葉窗切換組件……

UI庫的廣告就到時為止,我們看一下新版本帶來的新特性與FIX BUG情況吧。

  • 【新特徵】ms-duplex綁定全面升級,脫胎換骨,如avalon.duplexHooks鉤子物件,pipe內部方法。詳看這裡的例子。
  • 【新特徵】添加data-include-replace輔助指令 詳見這裡
  • 【新特徵】data-duplex-changed支援第二個參數data詳見這裡
  • 【新特徵】VM的$fire通訊機制變成這個樣式, all!xxx是不依賴於DOM樹向周邊VM發出通知; up!xxx與down!xxx是依賴於DOM向上方或向下方的VM發出通知,我們可以return false中止廣播; 普通的xxx只能觸發當前的VM的$watch回調。
  • 【新特徵】添加avalon.scanCallback,允許在某次掃描後觸發這些回調。詳見這裡與這裡的例子
        avalon.scanCallback = function(fn, group) {        group = group || "$all"        var array = scanObject[group] || (scanObject[group] = [])        array.push(fn)    }    avalon.scan = function(elem, vmodel, group) {        elem = elem || root        group = group || "$all"        //.....略    }   
  • 【最佳化】修正 $fire在跨模組通訊時無法通知widget組件的BUG(添加了createSinalTower內部方法)
  • 【最佳化】更改innerRequire內部方法的位置,及設定為空白函數,方便使用者移除“AMD載入器模組”後也能正常使用
  • 【最佳化】精簡IE6-8下input事件的類比
  • 【最佳化】精簡 newSetter的邏輯詳見這裡
  • 【最佳化】fix HTMLInputElement.prototype.value 的重寫
  • 【最佳化】重構notifySubscribers
  • 【最佳化】fix getEachProxy BUG 詳見這裡
  • 【最佳化】支援產生更多SVG元素
  • 【最佳化】為對付firefox外掛程式下嚴格的文法檢測,使用全新的擷取全域變數window的方法
  • 【最佳化】修正 ms-src不能載入SWF BUG詳見這裡
  • 【最佳化】修正ms-duplex 綁定VM某個子VM的屬性,input值修改後沒有同步到vm.$model的BUG詳見這裡
  • 【最佳化】修正avalon.mix方法拷貝VBScript對象時拋錯的BUG詳見這裡
  • 【最佳化】修正IE6下因為for in迴圈導致isPlainObject不準的BUG詳見這裡
  • 【最佳化】將ms-if去掉的元素都移動head標籤的avalon標籤下詳見這裡
  • 【最佳化】讓date過濾器能像chrome那樣支援更多日期格式詳見這裡

本次升級主打的是ms-duplex 2.0,大家可以到這裡一窺其強大!ms-duplex2.0相對於舊的ms-duplex只能將element.value簡單地同步到VM中,它添加了自動轉換類型的功能(核心庫),游標引導(avalon.mask),資料格式化(參看avalon.mask的第三個例子,將使用者輸入內容自動插入千分符),驗證機制(avalon.validation)。

第二大新特性就添加了avalon.scanCallback這新方法,允許使用者在掃描後進行操作。有了這東西,什麼data-include-rendered, data-repeat-rendered, data-with-rendered就沒有存在的必要了。以後它們內部全部用avalon.scanCallback實現。

從1.3.3起,我就著手開發靜態收集依賴機制,以此為契機,發現許多要改良的地方,全部放到一個叫avalon.$events.js的版本上。但經過幾個月的研究,發現靜態收集依賴,是對壓縮不友好的,像angular那樣需要引入許多奇異的方式來規避這問題。因此我最終放棄這東西,以後改用其他方式提高效能。未來將著力升級三柱臣與avalon.observe.js。

三柱臣,動畫mmAnimate,資料請求mmRequest,路由器mmRouter,現在就mmRequest最成熟,而mmRouter的需求則強烈,mmAnimate極需升級。它們三個都依賴了mmPromise,那是原生的Promise的一個封裝,效能超好。

在chrome36 beta中,就已經存在element.animate這個方法,即引進了著名的web-animation。chrome39將進一步完善。新的mmAnimate也將基於它進行開發。

迷你MVVM架構在github的倉庫https://github.com/RubyLouvre/avalon

avalon的新UI庫地址OniUI, 多達42個UI,強大的換膚功能

朋友們用avalon做的東西

  • 行動裝置 App:讀酷
  • chrome外掛程式:飯否用戶端
  • 為知筆記
  • 金山WPS office 測試人員中樞
  • 稻売兒
  • 桑夏資產官網
  • 企業級應用:超博CRM客戶關係管理系統(帳號:crm_ceo 密碼:nncb_ceo)
  • uliweb Python架構與avalon的組合樣本
  • avalon+jQuery實現網域名稱註冊查詢
  • 路由器樣本
  • 邊鋒活動頁
  • 記者考試題
  • 基於avalonJS實現的2048遊戲

迷你MVVM架構 avalonjs 1.3.7發布

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.