迷你MVVM框架 avalonjs 1.3.9发布
本次升级,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游戏
- 基于avalon的md编辑器
- 墨麒OA (user: linwei, password: 654321)
- 与jquery easyui的混用
最近,已经有三个百度部门(百度移动,百度商业,百度推广)在用avalon了,你们也快快加入吧!
迷你MVVM框架 avalonjs 1.3.9发布的更多相关文章
- 迷你MVVM框架 avalonjs 1.3.7发布
又到每个月的15号了,现在avalon已经固定在每个月的15号发布新版本.这次发布又带来许多新特性,让大家写码更加轻松,借助于"操作数据即操作DOM"的核心理念与双向绑定机制,现在 ...
- 迷你MVVM框架 avalonjs 1.3.4发布
发现一个以前从来没发现的大BUG,紧急发布此版本. fix getEachProxy BUG,此BUG会导致监控数组在删除某元素然后再添加元素时出现问题. avalon ms-on-*绑定添加一个钩子 ...
- 迷你MVVM框架 avalonjs 1.3.2发布
时隔一个月,avalon的新版本终于出来了,本次更新带来强大的模块间通信机制,其他就往常一样FIX BUG. 在文本绑定里,IE会对流离于DOM树外的文本节点的data属性赋值报错,需要添加一层判定 ...
- 迷你MVVM框架 avalonjs 1.3.1发布
avalon1.3.1发布. interpolate支持注释节点做定界符,avalon.config({interpolate:["<!--","-->&qu ...
- 迷你MVVM框架 avalonjs 1.3.8发布
avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...
- 迷你MVVM框架 avalonjs 1.3.6发布
本版本是一次重要的升级,考虑要介绍许多东西,也有许多东西对大家有用,也发到首页上来了. 本来是没有1.36的,先把基于静态收集依赖的1.4设计出来后,发现改动太多,为了平缓升级起见,才减少了一部分新特 ...
- 迷你MVVM框架 avalonjs 1.3.5发布
本版本主要是修复内存泄漏问题,让其在移动端更好的运作. 修正visible BUG 详见这里 修正$fire方法里的正则错误 详见这里 修正ms-attr BUG,在IE9-11,直接用element ...
- 迷你MVVM框架 avalonjs 1.3.3发布
大家可以在仓库中看到,多出了一个叫avalon.observe的东西,它是基于Object.observe,dataset, Promise等新API实现.其中,它也使用全新的静态收集依赖的机制,这个 ...
- 迷你MVVM框架 avalonjs 1.2.5发布
avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本 ...
随机推荐
- phper必知必会之数组指针(四)
数组指针 1.介绍几个数组指针的函数 current() - 返回数组中的当前单元 end() - 将数组的内部指针指向最后一个单元 prev() - 将数组的内部指针倒回一位 reset() - 将 ...
- 【jmeter】jmeter聚合报告之90%Line参数说明
其实要说明这个参数的含义非常简单,可能你早就知道他的含义,但我对这个参数一直有误解,而且还一直以为是“真理”,原于一次面试,被问到了这个问题,所以引起我这个参数的重新认识. 先说说我错误的认识: 我一 ...
- 【jmeter】jMeter使用Badboy录制Web测试脚本
JMeter 是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放 功能,同时提供图形结果分析功能,刚好弥补 ...
- python 异常类型----后期需理解调整
1.Python内建异常体系结构The class hierarchy for built-in exceptions is: BaseException +-- SystemExit +-- Key ...
- 重建oracle的em
重建oracle的em 今天不知道怎么,心血来潮,就把本机从域里退了出去,然后准备把oracle11g的control给处理处理 一开始也没怎么用心,上网随便找了点资料,就照着干了,然后什么都没干 ...
- c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息
我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存等. 首先需要引入命名空间: us ...
- PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113
PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113 php 等比例缩小图片 http://www.111cn.net/p ...
- bzoj4232: [Neerc2011 Northern]Kids Like Cakes
Description 给定一个n个点的严格凸多边形(各个内角<180°),现在要切出两个非退化三角形(三点不共线),要求两个三角形顶点必须是凸多边形的顶点,且三角形不可相交(但是点或边可以重合 ...
- java判断字符串中是否含有中文
/** * 判断字符串中是否含有中文 */ public static boolean isCNChar(String s){ boolean booleanValue = false; for(in ...
- binlog之五:mysqlbinlog解析binlog乱码问题解密
发现MySQL库的binlog日志出来都是乱码,如下所示: BINLOG ’ IXZqVhNIAAAALQAAAGcBAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAABUOcnY ...