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. java project 项目在 linux 下面部署方法

    1.前提是安装好了响应的开发和部署环境,例如jdk. 2.在Linux下运行可执行Jar包,首先准备jar包,一般的编译工具Eclipse,jbuilder都提供export功能,可以生成jar包. ...

  2. 如何向整个 Git 仓库补提交一个文件

    微软在 Reference Source 里开放了 .Net Framework 多个版本的源码.为了更方便地阅读这些源码,我们把每一个版本都下载下来后按顺序提交到 git 仓库中. 但是!!!居然忘 ...

  3. PHP和JS页面跳转和刷新总结

    PHP 页面跳转: // 只是跳转,所以一定要用die();或者exit;终止下一步操作; header('location:index.php'); exit; // 等待3秒,跳转并刷新 head ...

  4. vw+vh+rem响应式布局

    科普下: 平时很少用的css单位: 1.长度单位: rem:相对长度单位.相对于根元素(即html元素)font-size计算值的倍数; vw:相对于视口的宽度.视口被均分为100单位的vw; vh: ...

  5. goreman 多进程管理工具

    Linux下多进程管理工具对开发和运维都很有用,常见的功能全面的主流工具主要有monit.supervisor.不过开发中使用则推荐轻量级小工具goreman 举个例子:coreos的etcd就是使用 ...

  6. 转发 Java火焰图在Netflix的实践

    为了分析不同软件或软件的不同版本使用CPU的情况,相关设计人员通常需要进行函数的堆栈性能分析.相比于定期采样获得数据的方式,利用定时中断来收集程序运行时的PC寄存器值.函数地址以及整个堆栈轨迹更加高效 ...

  7. cockpit 使用(集成docker && k8s 管理)

    1. yum 安装 sudo yum install cockpit 2. 允许启动 sudo systemctl enable --now cockpit.socket 3. 可选的插件 cockp ...

  8. Python 函数 -xrange()

    xrange() xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器. 语法: xrange(stop) xrange(start, stop[, ste ...

  9. FastAdmin 中 Bootstrap-Table 列宽控制

    FastAdmin 中 Bootstrap-Table 列宽控制 使用 css 控制 1 使用 formatter 处理 2 http://issues.wenzhixin.net.cn/bootst ...

  10. qqbot 配置

    qqbot 配置 用起来还是挺方便的,使用 pip install qqbot 就可以. 不过找配置文件没注意,以为是在程序目前,原来是在 C:\Users\xxx.qqbot-tmp 目录. 插件可 ...