迷你MVVM框架 avalonjs 1.2.4发布】的更多相关文章

又到每个月的15号了,现在avalon已经固定在每个月的15号发布新版本.这次发布又带来许多新特性,让大家写码更加轻松,借助于"操作数据即操作DOM"的核心理念与双向绑定机制,现在越来越多人加入到avalon的阵营中来.此外,基于avalon的UI库OniUI也越来越强大,很快,树组件也开发完毕,下星期也与大家见面了.到时,OniUI也有两个Grid组件,一个树组件的完整UI库.与本次发布的UI还有验证组件,mask组件,百叶窗切换组件-- UI库的广告就到时为止,我们看一下新版本带来…
发现一个以前从来没发现的大BUG,紧急发布此版本. fix getEachProxy BUG,此BUG会导致监控数组在删除某元素然后再添加元素时出现问题. avalon ms-on-*绑定添加一个钩子,方便以后扩展. 添加一个统一的去掉内部方法 uniqSet. DOMNodeRemoved事件不好用,改用DOMNodeRemovedFromDocument事件监听元素是否被移除 添加一个全局心跳检测函数,avalon.tick,要求放入一个函数,当它返回false就从心跳列队中移除它.现在有关…
时隔一个月,avalon的新版本终于出来了,本次更新带来强大的模块间通信机制,其他就往常一样FIX BUG. 在文本绑定里,IE会对流离于DOM树外的文本节点的data属性赋值报错,需要添加一层判定 派发事件的逻辑,由DOC.createEvent("Event")必成DOC.createEvent("Events") 添加一个反XSS的过滤器sanitize 重构事件系统,暴露eventHooks对象 firefox添加对mousewheel的兼容支持 升级ms-…
avalon1.3.1发布. interpolate支持注释节点做定界符,avalon.config({interpolate:["<!--","-->"]}) 监控数组添加pushArray方法,类似于push方法,不过参数是一个数组 data-duplex-changed回调会在第一次赋值就触发 添加一配置项,调整ms-repeat的对象池的大小,avalon.config({maxRepeatSize:30}) 迷你MVVM框架在github的仓库…
本次升级,avalon改进了许多内部方法,大大提升性能,并且带来异步刷新视图的新功能. ms-html内部不再使用异步 head元素中的avalon元素加入ms-skip指令 重构计算属性,现在超级轻量化 重构CG回收,不会每次都全部检测所有绑定对象 重构内部方法isArrayLike,更好的判定非负整数 重构number过滤器 重构widget的节点回收,去掉onTree方法 重构Collection内部工厂 重构modelFactory, 现在VM.$event.$digest开启异步刷新视…
avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-repeat.ms-each.ms-with, 内部的代理对象全部使用普通的对象实现, 并且一个监控数组只对应一个代理VM数组,从而大量减少VM的数量. avalon不再使用scanCallback实现内部各种rendred回调,改成checkScan方法.详看这里的例子. fix parseHTML在…
本版本是一次重要的升级,考虑要介绍许多东西,也有许多东西对大家有用,也发到首页上来了. 本来是没有1.36的,先把基于静态收集依赖的1.4设计出来后,发现改动太多,为了平缓升级起见,才减少了一部分新特性,做成1.36.因此是先有1.4,才有1.36. 本版本针对公司(去哪儿网,毕竟是带薪在公司里搞这框架)的访问浏览器的占有率,加大对国产浏览器的测试.涉及浏览器有QQ浏览器, 搜狗浏览器, 猎豹浏览器, 傲游浏览器,但没有360浏览器,我们公司的同事还是很注意安全的.这么多浏览器,现在还差两个ca…
本版本主要是修复内存泄漏问题,让其在移动端更好的运作. 修正visible BUG 详见这里 修正$fire方法里的正则错误 详见这里 修正ms-attr BUG,在IE9-11,直接用element.setAttribute("value","xxx")还是不能同步到element.value 详见这里 修正ms-class BUG,现在ms-hover对应的属性发生变成,类名也能跟着变了详见这里 修正avalon.modern的AMD加载器的onerror触发逻…
大家可以在仓库中看到,多出了一个叫avalon.observe的东西,它是基于Object.observe,dataset, Promise等新API实现.其中,它也使用全新的静态收集依赖的机制,这个机制也完成得差不多,因此avalon与avalon.mobile下一版将会应用这最新成果,进行大改. fix IE6-8下直接修改表单元素值不触发data-duplex-changed回调的BUG, 详见这里 chrome浏览器对文本域进行Ctrl+V操作,会触发DOMNodeRemoved事件,这…
avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本. 现在开始重新升级avalon.ui,目前button, tabs已经升级完毕.大家可以以它为范例,编写相应组件.新的控件VM要求必须装备$init, $remove两个方法. 迷你MVVM框架在github的仓库https://github.com/RubyLouvre/avalon 入门教程h…
这段时间一直忙于建立avalon的单元测试,与重构官网.对avalon的更新都是来自公司内部的需求,性能优化与一些BUG修复. 添加大量调试日志. 重构shimController,以提高性能. createWithProxy, createEachProxy生成的代理VM的$id符合一定的格式,方便在parseExpr中生成的函数能共享. 重构parseExpr,减少表达式转换成求值函数时要经过所有分支数,提高性能 ms-if 实现按需加载. fix 内部函数iteratorCallback…
avalon.mobile 针对GCC压缩器进行优化 avalon.mobile对浏览器是否支持触屏使用更好的判定 监控数组的splice,remove,removeAt进行了重构,修改直接删掉列表的第一个元素或最后一个元素,$first, $last不同步的BUG avalon的ms-duplex在IE6-9下对oninput事件使用更好的方式实现模拟 重构文本绑定,对于不存在的属性,框架将保留此绑定属性或插值表达式,留到下次使用 增强对VM的$id命名冲突的处理 添加 version 属性,…
以后有关avalon的版本升级消息,全部改放到这里 重构parseHTML,让其支持xhtml 强化 ms-duplex-number拦截器 添加data-duplex-number辅助指令 值为strong medium weak ms-duplex添加对input[type=hidden]的支持 createCache改为LRU实现,avalon.nextTick大重构 fix avalon.ready触发两次的BUG fix getToken BUG number过滤器回到支持三个参数的情…
迷你MVVM框架 avalonjs 0.95发布 本版本最主要的改进是ms-with 深层绑定的实现,至少,avalon1.0所有重要的feature已经开发完毕,之后就是小补小漏,性能优化了. ms-with进行绑定.对VM的某个对象属性重新赋给它一个对象,那么页面上对应的列表将根据它的键值对重新排列增删,修改它的$val.如果对它的对象属性的某一个键重新赋值 ,只会进行更新操作,详见index21with.html, index22with.html, index23with.html ms…
迷你MVVM框架 avalonjs 0.85发布 本版本对循环绑定做了巨大改进,感谢@soom, @limodou, @ztz, @Gaubee 提供的大量测试文件. fix scanNodes, 在循环绑定(ms-each)扫描元素节点时必须 nextTick,否则旧式IE会忙碌不过来. fix ms-css ,旧式IE style[name] = value, 当value为NaN ,不带单位或不是数值什么会抛异常,需要try catch. 旧式IE下有些元素的innerHTML是只读的,…
迷你MVVM框架 avalonjs 0.82发布 本版本最大的改进是启用全新的parser. parser是用于干什么的?在视图中,我们通过绑定属性实现双向绑定,比如ms-text="firstName", ms-html="sex + '士'", ms-visible="Math.abs(toggle + 2000) >= 20", 我们需要将它们转换为求值函数.我们通过ms-controller="vm"来绑定Vie…
avalon1.2 带来了许多新特性,让开发更轻松!详见如下: 升级路由系统与分页组件. 对ms-duplex的绑定值进行增强,以前只能prop或prop.prop2,现在可以prop["xxx"].prop[prop2].换言之,添加对数组法对子属性的支持.详见这里 ms-duplex支持用JS修改input.value触发oninput事件(实现旧式IE下onpropertychange的功能),实现大量第三方组件都会操作input.value,有了这功能,我们就不需要写额外回调实…
性能得到大幅改良的avalon1.3发布了. 修复$outer BUG 修复IE6-8下扫描加载Flash资源的OBJECT标签时,遇到它既没有innerHTML也没有getAttributeNode的奇葩情况,解决方法是直接忽略它 ms-duplex添加对中文输入法的处理 removeFromSanctuary添加一分支,加强对旧式IE的节点的内存回收 fix 监控数组的set方法无法同步$model BUG 重构avalon.fn.offset方法 fix avalon.fn.data BU…
本版本最重要的特性是引进了AMD规范的模块加载器,亦即原来mass Framework 的并行加载器, 不同之处,它引进了requirejs的xxx!风格的插件机制,比如要延迟到DOM树建完时触发,是使用ready!, 要加载css文件是使用css!css_path. 加载器在移动设备或PC的单页应用不可或缺.根据公司内容的不完全统计,手机等浏览器的性能只是PC的十分之一左右,而且测试对象还是公司的有钱同事的手机,什么IP,三星GALAXY. 在过去的一周,整合angular, requirej…
本版本修了一些BUG与不合理的地方,感谢感谢ztz, 民工精髓, 姚立, qiangtou等人指正. 处理AMD加载 旧式IE下移除script节点内存泄漏的问题 fix firefox 全系列visible,缘由是当节点不在DOM树时,getComputedStyle不精确 fix Object.getPrototypeOf的验证正则 去除excapeRegExp中的捕获 update Function.prototype.bind 针对不同的浏览器选用更快的avalon.nextTick实现…
本版本最大的改进是引入ms-class的新风格支持,以前的不支持大写类名及多个类名同时操作,新风格支持了.还有对2维监控数组的支持.并着手修复UI框架. 重构 class, hover, active, bind绑定 fix parseExpr在IE全系列的BUG.IE全家 Function("return ")出错,需要Function("return ;") 增加对contains方法 的检测,不支持contains方法,则在Node.prototype下用co…
这段时间吸取@limodou, @东灵等人的意见,做了以下改进 重构isArrayLike,提高avalon.each的性能,原来avalon.each是依赖于isArrayLike来判定是循环普通对象还是类数组.isArrayLike是从jQuery扒过来,它内部依赖于getType, isWindow这两个笨重的方法,因此性能不怎么样.新的isArrayLike去掉它们,在avalon.js, avalon.mobile.js各自实现.详见这里 修正计算属性在某些场合不解发$watch回调的…
本版本主要做了如下改进: 优化ms-if的逻辑,现在描述DOM的顺序是 ms-skip, ms-important, ms-controller, ms-if ... 只要元素存在ms-skip 这个绑定属性时,就忽略扫描此元素及子孙.然后是ms-important, ms-controller这 两个与作用域有关的绑定,如果它们指向的VM在avalon.vmodels 不存在时,规则同ms-skip. 最后ms-if,如果ms-if的表达式的结果为true,那么走如下步骤:如果没有插入到DOM…
本版本主要是性能优化与 fix BUG,改进如下: 处理notifySubscribers中的BUG,它在标准浏览器不会移除那些无用的视图刷新函数.详见这里 重构modelBindling.SELECT方法中的updateView, 感谢AngularJS中文社区(278252889)中的@basecss²º¹³指正,详见这里 处理eachIterator方法中第一个locatedNode 求值,详见这里 对监控数组进行优化,现在所有监控数组都共用一套方法,大大节省内存,详见这里 抽象出regi…
在本版本中,王之三柱臣全部就位! mmRouter: https://github.com/RubyLouvre/mmRouter mmAnimate: https://github.com/RubyLouvre/mmAnimate mmRequest: https://github.com/RubyLouvre/mmRequest 在这段其间修正的BUG与增强 fix 带参数的事件回调不能阻止默认行为的BUG 这里内部 fix ms-if对应的节点有样式时,会出现闪屏的现象 这里 对ms-da…
在本版本中,avalon侧重于对组件开发的支持,可用控件达到12个,末来将大力投入对GRID,TREE等重型UI的开发中. 添加ms-widget绑定,废弃ms-ui绑定 为ms-include添加跨域处理与绑存模板的功能 支持在on绑定通过bind方法修改this值 对{{}}插值表达式中出现的过滤使用更好的正则进行抽取 优化 ms-if的插入监听机制 升级avalon.draggable 升级现存所有UI组件,并添加多两个组件,现在拥有accordion,autocomplete,butto…
本版本添加了许多有用的功能,得益于用户量的增大,一些隐性BUG也暴露出来Fix掉了.强烈建议升级! 优化扫描流程: ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) --> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(20…
在本版本主要是性能优化,添加一些有用的功能(如回调什么的),离成品阶段不远了. 修正 updateViewModel bug 修正监控数组的set方法 bug 添加data-each-rendered, data-repeat-rendered, data-with-rendered, data-include-loaded, data-include-rendered等回调 支持使用noscript标签做模板 升级select 元素的ms-duplex绑定 update ms-repeat的c…
本版本最大的改进是将视图的操作全鄣变成异步.详情如下: 管道符与短路与相混淆的BUG 重构on绑定,省得每次都重复绑定同一个事件回调.虽然addEventListener或attachEvent会忽略它,但这会造成不必要的计算. 如果一个函数内对VM的某一个属性重复赋值,视图更视不及时会出现BUG.这是源于纯JS操作与DOM操作需要的时间量级不一样,一次DOM操作花的时间是纯JS操作的上千倍甚至上万倍.如果多个DOM操作叠加在一起,浏览器可能忙碌不过来,因此改成异步. 本版本严重感谢网友@soo…
本版本做了如下改进: 重构计算属性, 这是@soom提出的BUG,发现计算属性被某个监控属性向上驱动更新自己时,不会解发$watch回调.详见这里. 强化ms-bind绑定,当第一次扫描时也会执行它的回调,以后这个值改动时,和以前一样执行这回调. 详见这里 . 修正ms-text绑定,当它不是以插值表达式形式出现,那么它就会通过innerText或textContent替它里面的所有内容. 详见这里. 修正scanExpr, attr绑定与date过滤器的BUG. 添加ms-include绑定,…