avalon1.2的性能优化风暴很快就告一段落,入职也快一个月了,许多乱七八糟的事也少了下来,估计未来一个月会有许多好东呈现给大家。

首先是一个性能检测工具。由于MVVM是将原本由人脑干的事,转到各种绑定上,因此性能是各MVVM框架一直关注的头等问题。这时性能检测工具就帮上大忙了。

内部编译器的改进。这分几部分,一是抽取变量,二是确定变量与某个VM的关系,最后是转换为求值函数。上个月基本上完后了后两部分。第一步自0.7后基本没动,最近几天内部悄悄做了一个新的parser,还在测试中,待稳定下来,则加入到新版本中。这将会大大提高扫描速度。

ms-widget的重构。将一个普通的元素节点变成一个功能齐备的控件是一个美妙的特性,这是所有MVVM框架都必需装备的杀手锏。但无法说得多么神奇,它内部的实现与之前的JQ对象没多区别,就是要传入要操作的元素节点以及一些配置项。由于之前过于追求自由,不对用户进行各种限制,结果用户有点不知所措,就算出了问题也不好定位。其次,之前一直缺乏对控件的生命周期管理,容易出现内存泄漏的危险。下面是对新ms-widget的一些规划,希望能脱骨换胎,浴火重生:

  • 在控件没有初始化时,不对控件内部进行扫描,确保从外到内的扫描原则
  • 为了完成第一原则,以及防止控件加载前其内部的{{}}被显示出来,决定将控件所在的元素临时移出DOM树,用一注释节点占位
  • 原元素要保持原有的VM链及绑定属性, 方便以后还原(这个已经实现)
  • 控件VM必须有一个$init方法,用于生成它的视图
  • 控件VM必须有一个$remove方法,用于销毁它的视图(此方法与上面的方法可以多次调用,比如弹出层,允许不断初始化与销毁)
  • 控件模块必须返回控件VM,用于自动销毁控件与控件VM(CG回收)

考虑将avalon.require.text移入核心库。显然随着UI库的扩充,这个模块越来越有用了。相对而言,avalon.mobile的触屏模块将变成一个插件,avalon.mobile或许会改名。次世代avalon.seber也在研发中,它使用了es6的新特性,以期获得更好的性能。目前avalon能在一个大页面上扛住1万个绑定,相对而言angular是2千个。

其实我本人是很讨厌“预览”什么吊人口胃的东西,不喜欢画大饼,但工作忙,很可能会忘掉了这些点子,就公开出来让大家监督我了。另一个,我在公司内部成立了一个小组是专门维护与升级avalon.ui,以期让它能与大阿狸的KISSY小组相抗衡。avalon相对KISSY有一个很大的优势,就是它是一个MVVM框架做底层。怎么描述比较avalon与传统的框架的区别呢?我们大致可以联想一下“自变量”与“因变量”这两个概念。传统框架,包括jQuery,它就是自变量太多,程序员在处理内部类的一些行为时,还要考到来自DOM的用户触发事件,总在几十个类与DOM上进行思维跳跃。avalon的理念是操作数据即操作DOM,这个数据就是VM,总是围绕它进行编程就行了,其他DOM操作,计算属性等等都是因变量,由框架自行处理。人的精力是有限的,因此每一辆汽车才只允许有一个转向盘,你见过有五六个转向盘的车子吗?!目前主流DOM框架就是这吊样,司机在五六个转向盘挥舞双手,因此才有这么多事故(BUG)的发生!最后还是为自己拉些选票吧,希望大家都来试用avalon,在GITHUB上关注(star)一下。

avalon1.3的新特性预览的更多相关文章

  1. C# 9.0 新特性预览 - 类型推导的 new

    C# 9.0 新特性预览 - 类型推导的 new 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大 ...

  2. C# 9.0 新特性预览 - 空参数校验

    C# 9.0 新特性预览 - 空参数校验 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它 ...

  3. C# 9.0 新特性预览 - 顶级语句

    C# 9.0 新特性预览 - 顶级语句 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们 ...

  4. C# 9.0 新特性预览 - init-only 属性

    C# 9.0 新特性预览 - init-only 属性 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章 ...

  5. Windows Phone 8.1SDK新特性预览

    前言    Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装.本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的 ...

  6. Office 2016 正式发布——新特性预览

    今天微软又发生了一件大事!Windows Office 2016正式发布,这标志着Windows Office 又达到了一个新的里程碑! 全新的Office 发布为Office 365 用户带来了新的 ...

  7. CSS3_新特性预览

    一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信.  它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...

  8. Vue.js 3.0 新特性预览

    总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团 ...

  9. 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...

随机推荐

  1. Linux下Eclipse配置安装 PyDev(Pydev插件一直不能成功,安装这个插件失败的问题)

    pydev插件安装方式如果采取从网络上下载,然后解压到eclipse中文件夹到方式,运行到时候可能会导致重启eclipse后根本看不到这个插件! 原因以及解决方式,看下面!  转自:http://ww ...

  2. 关于python中的循环

    参考下面这一篇: http://www.cnblogs.com/vamei/archive/2012/05/30/2526357.html 其中用range的方式最好!

  3. Docker安装ShowDoc

    ShowDoc就是一个非常适合IT团队的在线文档分享工具,它可以加快团队之间沟通的效率. 一.下载showDoc资源 打开 https://github.com/star7th/showdoc 复制其 ...

  4. JMeter代码小Demo(Java)

    一.使用Eclipse进行项目编写 1.使用eclipse,新建项目名字为:TestNumber,包名为:test,类名为:TestNum 2.在JMeter的安装目下下lib/ext中copy2个j ...

  5. 利用OsCache实现后端轮循

    轮循随处可见,最常用的是APP首页的一些促销活动,一两秒切换一张图片,让前端实现起来也不难.这里说下后端的轮循,实现原理是数组+缓存.将数组放入缓存,指定缓存失效时间,如果是在失效前从缓存中取数据,那 ...

  6. android 手机UDP 接受不到数据

    一.有的手机不能直接接收UDP包,可能是手机厂商在定制Rom的时候把这个功能给关掉了. 1.可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock ...

  7. 【转】Jmeter之短板以及建议解决方案

    随着JMeter的应用,发现JMeter的局限性越来越多,急需进一步扩展改进. 一.几百兆的sample 日志解析出现OutOfMemory 最近的几个项目都是Java sample 日志,应用都是高 ...

  8. Java-Runoob-面向对象:Java Override/Overload

    ylbtech-Java-Runoob-面向对象:Java Override/Overload 1.返回顶部 1. Java 重写(Override)与重载(Overload) 重写(Override ...

  9. thinkphp如果表名有下划线需要用Model

    模型命名规范 ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范.首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义. ...

  10. 在centOS5.9安装mysql

    网上的信息实在是太乱了,好多出了错的,我这个是自己亲自配置,其实就简简单单的几步:如果你的系统里有以前遗留的文件,用rm -rf文件名删除掉 1.安装MySQL客服端和服务器端             ...