迷你MVVM框架 avalonjs 1.3.9發布
原文 http://www.cnblogs.com/rubylouvre/p/4180611.html
本次升級,avalon改進了許多內部方法,大大提升性能,并且帶來異步刷新視圖的新功能。
- ms-html內部不再使用異步
- head元素中的avalon元素加入ms-skip指令
- 重構計算屬性,現在超級輕量化
- 重構CG回收,不會每次都全部檢測所有綁定對象
- 重構內部方法isArrayLike,更好的判定非負整數
- 重構number過濾器
- 重構widget的節點回收,去掉onTree方法
- 重構Collection內部工廠
- 重構modelFactory, 現在 VM.$event.$digest 開啟 異步刷新視圖 功能
- 重構offsetParent
- 重構ms-repeat,不再觸發多余的回調
- 針對IE下 MutationObserver 會撕碎文本節點BUG, 添加 mergeTextNode 內部方法
- 優化短路與, 短路或的處理邏輯
- 支持CommonJS和AMD和單文件三種方式引用,支持通過bower命令加載avalon
- avalon.modern.js遺漏了 parseJSON補上,并且修正parseJSON的邏輯與原生的JSON.parse保持一致
- 去掉所有與scanCallback相關的定時器
本次升級帶來的最大的特性是$digest
在之前的版本,如果我們對VM的某個監控屬性連續地改動,每次改動都立即同步到視圖,并觸發對應的$watch回調。
<!DOCTYPE html> <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <script src="avalon.js"></script> <script> var vm = avalon.define({ $id: "test", aaa: 111 }) vm.$watch("aaa", function(v) { console.log(v) }) vm.aaa = 1 vm.aaa = 2 vm.aaa = 3 </script> </head> <body ms-controller="test"> {{aaa}} </body> </html>
控制臺會依次輸出1,2,3
<!DOCTYPE html> <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <script src="avalon.js"></script> <script> var vm = avalon.define({ $id: "test", aaa: 111 }) vm.$events.$digest = true vm.$watch("aaa", function(v) { console.log(v) }) vm.aaa = 1 vm.aaa = 2 vm.aaa = 3 </script> </head> <body ms-controller="test"> {{aaa}} </body> </html>
這時只輸出一次,這對于一些類似于mousemove的頻繁操作非常有利,大大提升性能。
最近一朋友用avalon做的一個使用avalon的模板項目。 https://github.com/pinghe/seedfrontend
此原型項目展示了:
- 支持cordova、browser應用,即同一套代碼可用于桌面瀏覽器和各類手機應用。
- 使用avalon MVVM框架
- 使用cordova 用于移動端
- 使用requirejs amd模塊加載器
- 使用gulp構建系統
- 展示了頁面切分和邏輯模塊劃分(html、css、js),及如何根據實際切換模塊。適用團隊分工合作
- 頁面路由技術,頁面轉換的有限狀態機應用。
- 支持js、coffee腳本
- 支持css、less、sass 文件
- 支持三種應用場景,瀏覽器,移動app
- 支持生產環境,即可將js合并壓縮成單個js文件,優化css文件,優化html文件
- 支持DevOps
這是另一個朋友用avalon搭建后臺系統的心得, 《使用mvvm框架avalon開發公司內部運營管理系統的一些心得》
此外,avalon已經啟用 新官網 。
迷你MVVM框架在github的倉庫 https://github.com/RubyLouvre/avalon
avalon的新UI庫地址 OniUI , 多達42個UI,強大的換膚功能
朋友們用avalon做的東西
- 移動應用:讀酷
- chrome插件:飯否客戶端
- 為知筆記
- 金山WPS office 會員中心
- 稻売兒
- 桑夏資產官網
- 企業級應用:超博CRM客戶關系管理系統 (帳號: crm_ceo 密碼: nncb_ceo)
- uliweb Python框架與avalon的組合示例
- avalon+jQuery實現域名注冊查詢
- 路由器示例
- 邊鋒活動頁
- 記者考試題
- 基于avalonJS實現的2048游戲
- 墨麒OA (user: linwei, password: 654321)
最近,已經有三個百度部門(百度移動,百度商業,百度推廣)在用avalon了,你們也快快加入吧!
來自: http://www.cnblogs.com/rubylouvre/p/4180611.html