博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
avalon2.2.1的所有核心概念
阅读量:7205 次
发布时间:2019-06-29

本文共 1407 字,大约阅读时间需要 4 分钟。

avalon2.2.1带来了一些新东西。

avalon是一个比较保守的库,因此是市面上少数支持IE6的库。它的理念是操作数据即操作DOM,以工程化的方式来解决浏览器兼容性问题。有了babel, webpack, rollup等工具,avalon2.2.1已经用上es6的类,箭头函数等时髦东西。一味小补小修是跟不上时代的,因此必须有新东西了。

这次改动是VM上的。2.2.0带来了Proxy形态的VM。算上兼容IE6-8的VBScript模态,与烂大街的Object.defineProperty形态,avalon内部有三种方式创建VM。

avalon2.2正式废掉$skipArray,只要是$开头的属性就不会转换为监控属性。

VM的世界变成2类生物,非监控属性与监控属性。

然后2.2.1带来了计算属性,因此世界一分为三。但监控属性与计算属性不是一个普通的访问器属性,它们背后还有其他东西支撑着,这就是自变因子与因变因子。相当于数学的自变量与因变量。它们承担着与视图中的指令双向绑定的任务。当然VM中还有一个叫$watch回调的东西,当VM的属性值发生变化,这些回调也会被调用,这与指令的行为一样,因此它们封装成Action(操作单元)。

var vm = avalon.define({        $id:'test',        aaa: 111,        $computed: {//计算属性在这里集中定义           bbb: function(){return this.aaa+'!!!'},//只读计算           xxx: {//可写计算               get: function(){                   return this.aaa + this.bbb               },               set: function(val){                  var arr = val.split(' ')                  this.aaa = arr[0]                  this.bbb = arr[1]               }           }        },        //从这里开始都是非监控属性        $aa: 222,        bbb: new Date        ccc: /regexp/,        ddd: function(){},        eee: document.body//节点,window,文档    });

VM的值一变,视图的某个地方便跟着变化,如果VM的值变得很快,视图就会有性能问题了。毕竟VM是JS或VBS对象,而DOM是另一个世界的重型对象。于是2.2.1引入了事务。事务是同步的,比vue, react, ng的异步更新有一个天然的优势,可以与jQuery等DOM库完美配合使用。

clipboard.png

对于用户而言,大家不需要了解什么自变因子,因变因子与操作单元,那是双向绑定的核心,被一层层地封入框架内部。大家连直接操作它们的机会都没有。

不过有了这些东西,avalon的绑定机制终于明晰下来了。以后就可以努力往TS方向迁移,不断优化绑定机制,组件机制,构建自己的全家桶了。

转载地址:http://fnlum.baihongyu.com/

你可能感兴趣的文章
【小白的CFD之旅】22 好网格与坏网格
查看>>
MySQL--指定浮点型数据的精确度TRUNCATE
查看>>
[Mac入门]如何在Mac下显示Finder中的所有文件
查看>>
电梯停靠问题---------------给你出道题
查看>>
【WPF】动态设置Binding的ConverterParameter转换器参数
查看>>
Nginx配置教程
查看>>
linux中查看和开放端口
查看>>
poj3181 Dollar Dayz
查看>>
求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX
查看>>
SQL Server外连接、内连接、交叉连接
查看>>
Ajax-jQuery_Ajax_实例 ($.ajax、$.post、$.get)
查看>>
Python实现web动态服务器
查看>>
新客户上云 –虚拟机及相关服务常见问题集锦
查看>>
IntelliJ Idea 常用快捷键列表
查看>>
各数据库连接配置与maven依赖安装
查看>>
Linux(centOS)手动安装删除Apache+MySQL+PHP+Memcached原创无错版
查看>>
Nginx的启动(start),停止(stop)命令
查看>>
代码生成工具更新--快速生成Winform框架的界面项目
查看>>
Jquery根据JSON生成Table
查看>>
[Oracle]Sqlplus 中使用 new_value
查看>>