avalon1.3的新特性预览
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的新特性预览的更多相关文章
- C# 9.0 新特性预览 - 类型推导的 new
C# 9.0 新特性预览 - 类型推导的 new 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大 ...
- C# 9.0 新特性预览 - 空参数校验
C# 9.0 新特性预览 - 空参数校验 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它 ...
- C# 9.0 新特性预览 - 顶级语句
C# 9.0 新特性预览 - 顶级语句 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们 ...
- C# 9.0 新特性预览 - init-only 属性
C# 9.0 新特性预览 - init-only 属性 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章 ...
- Windows Phone 8.1SDK新特性预览
前言 Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装.本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的 ...
- Office 2016 正式发布——新特性预览
今天微软又发生了一件大事!Windows Office 2016正式发布,这标志着Windows Office 又达到了一个新的里程碑! 全新的Office 发布为Office 365 用户带来了新的 ...
- CSS3_新特性预览
一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信. 它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...
- Vue.js 3.0 新特性预览
总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团 ...
- 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...
随机推荐
- BZOJ1015: [JSOI2008]星球大战starwar【并查集】【傻逼题】
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...
- python(十三):网络编程之socket与socketserver
socket是操作系统中I/O系统延伸部分,支持TCP和UDP等网络通信协议,它使计算机之间(或其本身)的进程通信称为可能.socket中的socket()函数.recv()函数和send()函数,相 ...
- C#封装的一个JSON操作类
using System; using System.Collections.Generic; using System.Collections; using System.Text; using S ...
- mount: /dev/sdb already mounted or /sheepdog1 busy(multipath,wwid,uuid,udev)
正常处理逻辑: 先umount /dev/sdb或是umount /backup如果还是显示的busy,你试试下面的方法fuser -m /dev/sdb查看一下是否sdb1正在被使用,或是有进程正在 ...
- MySQL 性能优化技巧
原文地址:MySQL 性能优化技巧 博客地址:http://www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这 ...
- C# WMP 视频播放
1. C#播放器控件常用的方法介绍 右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Pla ...
- Linux下的lds链接脚本详解
1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表 ...
- java的RTTI和反射机制
RTTI,即Run-Time Type Identification,运行时类型识别.RTTI能在运行时就能够自动识别每个编译时已知的类型. 很多时候需要进行向上转型,比如Base类派生出Derive ...
- MySQL Join算法与调优白皮书(三)
Batched Key Access Join Index Nested-Loop Join虽好,但是通过辅助索引进行链接后需要回表,这里需要大量的随机I/O操作.若能优化随机I/O,那么就能极大的提 ...
- java代码---------再练习ChatAt()的用法
总结: 没有理解方法的含义.瞎用 package com.mmm; //实现字符串中某个字符出现的次数 public class Mo { public static void main(String ...