科题 | avalon1 | avalon2 | |
---|---|---|---|
如何得知某个属性被改动 | 使用VBScript,Object.defineProperty实现对=号的重写 | 在此基础增加Proxy的魔术监听 | |
如何更新视图 | 找到变动属性对应的订阅者数组,执行这些数组元素的update方法 | 使用vm.$render生成虚拟DOM树,diff,从上到下有序更新 | |
计算属性 | 支持 | 移除 | |
绑定属性的处理 | 扫描后删除 | 扫描后还留着 | |
循环指令 | ms-repeat,ms-each,ms-with | ms-for | |
循环指令的语法 | ms-repeat-el='array' | ms-for="el in @array" | |
如何辩别指令中的vm属性 | avalon自行进行语法抽取 | 强制在前面带@或##符号 | |
垃圾回收 | 密封舱机制,负责清空订阅者数组 | 由于不保存绑定对象,没有CG的烦恼 | |
性能 | 一般,但能撑起上万个指令,瓶颈取决于绑定对象的所占内存 | 原来的5倍以上,瓶颈取决于虚拟DOM的规模 | |
最复杂的指令 | ms-repeat | ms-duplex | |
组件指令 | ms-widget='id,name,opts' | ms-widget='Array'传入一个对象数组,用法更灵活 | |
组件生命周期 | onInit, onDispose | onInit, onReady, onViewChange, onDispose | |
动画 | ms-effect | ms-effect(与angular的animate更接近) | |
如何操作组件 | 通过onInit取得组件vm进行操作 | 直接操作配置对象 | |
如何对组件传入大片内容 | 使用ms-html或改成模板 | 通过slot机制 | |
加载器 | 使用AMD风格的内置加载器 | 移除,使用webpack进行打包 | |
模块化 | 源码里自由划分 | 使用nodejs的require与module.exports组织起来 | |
important指令 | 有 | 有(让页面渲染更快) | |
{{}} | 不完全等价于ms-text | 完全等价ms-text | |
if指令 | ms-if="Boolean" | ms-if="Boolean" | |
attr指令 | ms-attr-name=value | ms-attr="object" object是一个对象,方便每次处理多个属性 | |
class指令 | ms-class='xxx: toggle' | ms-class=’Array | String‘ 用法变了 |
visible指令 | ms-visible="Boolean" | ms-visible="Boolean" | |
过滤器 | 只能用于innerText中的{{}}及ms-text, ms-html | 数量琳琅满目,所有指令都支持 | |
模板指令 | ms-include | 移除,由于后端无法实现等价功能 | |
事件指令 | 普通的事件绑定 | 能支持事件代理的都用事件代理 | |
数据验证 | 使用oniui的validation | 使用内置的ms-validate,ms-duplex,ms-rules | |
后端渲染 | 实现成本高昂 | 支持 | |
核心架构 | 观察者模式 + 属性劫持 | 大模板函数+虚拟DOM+属性劫持 |
avalon1与avalon2的异同
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...