迷你MVVM框架 avalonjs 1.3.9發佈

本次升級,avalon改進了許多內部方法,大大提高性能,而且帶來異步刷新視圖的新功能。php

  • 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相關的定時器

本次升級帶來的最大的特性是$digestcss

在以前的版本,若是咱們對VM的某個監控屬性連續地改動,每次改動都當即同步到視圖,並觸發對應的$watch回調。html

<!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,3jquery

<!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的頻繁操做很是有利,大大提高性能。git

最近一朋友用avalon作的一個使用avalon的模板項目。https://github.com/pinghe/seedfrontendgithub

此原型項目展現了:web

  • 支持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開發公司內部運營管理系統的一些心得》chrome

此外,avalon已經啓用新官網gulp

迷你MVVM框架在github的倉庫https://github.com/RubyLouvre/avalon瀏覽器

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


朋友們用avalon作的東西

最近,已經有三個百度部門(百度移動,百度商業,百度推廣)在用avalon了,大家也快快加入吧!

相關文章
相關標籤/搜索