本次升级,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做的东西

最近,已经有三个百度部门(百度移动,百度商业,百度推广)在用avalon了,你们也快快加入吧!

迷你MVVM框架 avalonjs 1.3.9发布的更多相关文章

  1. 迷你MVVM框架 avalonjs 1.3.7发布

    又到每个月的15号了,现在avalon已经固定在每个月的15号发布新版本.这次发布又带来许多新特性,让大家写码更加轻松,借助于"操作数据即操作DOM"的核心理念与双向绑定机制,现在 ...

  2. 迷你MVVM框架 avalonjs 1.3.4发布

    发现一个以前从来没发现的大BUG,紧急发布此版本. fix getEachProxy BUG,此BUG会导致监控数组在删除某元素然后再添加元素时出现问题. avalon ms-on-*绑定添加一个钩子 ...

  3. 迷你MVVM框架 avalonjs 1.3.2发布

    时隔一个月,avalon的新版本终于出来了,本次更新带来强大的模块间通信机制,其他就往常一样FIX BUG. 在文本绑定里,IE会对流离于DOM树外的文本节点的data属性赋值报错,需要添加一层判定 ...

  4. 迷你MVVM框架 avalonjs 1.3.1发布

    avalon1.3.1发布. interpolate支持注释节点做定界符,avalon.config({interpolate:["<!--","-->&qu ...

  5. 迷你MVVM框架 avalonjs 1.3.8发布

    avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...

  6. 迷你MVVM框架 avalonjs 1.3.6发布

    本版本是一次重要的升级,考虑要介绍许多东西,也有许多东西对大家有用,也发到首页上来了. 本来是没有1.36的,先把基于静态收集依赖的1.4设计出来后,发现改动太多,为了平缓升级起见,才减少了一部分新特 ...

  7. 迷你MVVM框架 avalonjs 1.3.5发布

    本版本主要是修复内存泄漏问题,让其在移动端更好的运作. 修正visible BUG 详见这里 修正$fire方法里的正则错误 详见这里 修正ms-attr BUG,在IE9-11,直接用element ...

  8. 迷你MVVM框架 avalonjs 1.3.3发布

    大家可以在仓库中看到,多出了一个叫avalon.observe的东西,它是基于Object.observe,dataset, Promise等新API实现.其中,它也使用全新的静态收集依赖的机制,这个 ...

  9. 迷你MVVM框架 avalonjs 1.2.5发布

    avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本 ...

随机推荐

  1. Java 虚拟机(JVM)

    java 中的 JIT (Just in time) compiler:即时编译器.

  2. telinit:Did not receive a reply.Possible causes include:the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired

    问题: Enabling /etc/fstab swaps: [ok]telinit:Did not receive a reply.Possible causes include:the remot ...

  3. 消息中间件 ActiveMQ的简单使用

    一.AactiveMQ的下载和安装 1. 下载ActiveMQ 地址:http://activemq.apache.org/activemq-5152-release.html 我这里下载的是wind ...

  4. spring Annotation based configuration

    spring 注解相关 https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s11.html

  5. 源码|ThreadLocal的实现原理

    ThreadLocal也叫"线程本地变量"."线程局部变量": 其作用域覆盖线程,而不是某个具体任务: 其"自然"的生命周期与线程的生命周期 ...

  6. bzoj 1288: Neighbours

    Description 很久以前, 有一个小小的国度, 为了方便, 我们可以把它想象为一个大大的矩形, 矩形的左下角为(0, 0), 右上角为(w, h), 共有(w + 1) * (h + 1)个整 ...

  7. (转)手机的AP和BP是什么?

    AP:Application Processor,即应用芯片 BP:Baseband Processor,即基带芯片 搞什么嘛,双核就双核呗,怎么又搞出个AP和BP啊 原来,FCC(美国联邦通信委员会 ...

  8. 6.28笔记-servlet3.0注解配置、文件上传、过滤器、监听器

    一.servlet3.0注解配置 使用javaEE6.0 支持servlet3.0 value的值就是访问路径 urlPatterns的值也是访问路径 @WebServlet(name="D ...

  9. IntelliJ IDEA神器使用技巧笔记

    1. Alt + 数字 打开idea 快捷键打开相应的窗口: 高效定位代码: 无处不在的跳转 1.项目间的跳转: Windows ->   ctrl+alt+[   /  ] 2.文件之间的跳转 ...

  10. SignalR (二)

    在上节中,我们已经初步对 SignalR 进行了了解,这一节我们将做一个SignalR Demon,具体的步骤如下: 1. 创建一个 mvc 4 web 应用程序,并选择 Basic 2. 创建一个 ...