迷你 MVVM 框架 avalonjs 1.3.6 发布

本版本是一次重要的升级,考虑要介绍许多东西,也有许多东西对大家有用,也发到首页上来了。

本来是没有1.36的,先把基于静态收集依赖的1.4设计出来后,发现改动太多,为了平缓升级起见,才减少了一部分新特性,做成1.36。因此是先有1.4,才有1.36。

本版本针对公司(去哪儿网,毕竟是带薪在公司里搞这框架)的访问浏览器的占有率,加大对国产浏览器的测试。涉及浏览器有QQ浏览器, 搜狗浏览器, 猎豹浏览器, 傲游浏览器,但没有360浏览器,我们公司的同事还是很注意安全的。这么多浏览器,现在还差两个case才能在猎豹浏览器上通过。原因是猎豹浏览器是双核 的,框架一些内部判定分支不小心掉进坑里了。如往常一样,对于正常的IE6-8,avalon是全部通过。

下面简单罗列一下新特性与修复情况:
•【新特性】添加avalon.isFunction方法,不用多说,大家都知道怎么用,但在IE6-8与W3C下,它的实现是不一样的。
•【新特性】添加data-duplex-focus辅助指令, 当ms-duplex位于文本域,密码域,文本区上,添加了此指令,会自动获取焦点,光标位于最后的文本后。详见这里。
•【新特性】ms-duplex-*添加数据转换功能。详见这里。
•【优化】重构sanitize过滤器,详见这里。
•【优化】重构html绑定,将会导致内存泄漏的replaceNodes替换掉,这里。
•【优化】重构if绑定,将会导致内存泄漏的msInDocument、ifSanctuary、 placehoder属性移除掉,详见这里。
•【优化】重构repeat绑定,将会导致内存泄漏的startRepeat、 endRepeat、 parent、callbackElement属性移除掉,原template属性改成为一个字符串。详见这里。
•【优化】重构modelFactory,通过静态分析收集监控属性与计算属性及函数间的依赖关系,$watch回调的存放数组与视图刷新函数的存放数组合而为一,详见下面commit 简化计算属性、 监控数组的订阅数组 对函数内部的监控属性进行依赖收集。
•【优化】重构avalon.contains,IE6-8下,对游离于DOM树外的文本节点,访问其parentNode,有时会抛错。详见这里。
•【优化】提高cacheExpr的缓存命中率,详见这里。
•【优化】重构IE6-8下设置元素透明度,待会儿讲。
•【警告】重构avalon.Array.ensure的行为,通过返回值是数字还是undefined判定其是否已经添加新元素,详见这里。
•【警告】废弃dettachVModels的配置项,详见这里。

总之,在DOM上是存在各种奇奇怪怪的属性与方法,与它们打交道,正是我们前端写码的乐趣所在。掌握的细节越多,我们的选择就越多,写出的代码就越优雅高效。

迷你MVVM框架在github的仓库:https://github.com/RubyLouvre/avalon

官网地址:http://rubylouvre.github.io/mvvm/

avalon的新UI库地址 OniUI, 多达36个UI,强大的换肤功能

avalon是一个功能强大,体积小巧的MVVM框架。它遵循“操作数据即操作DOM”的理念,让你在代码里基本见不到一点DOM操作代码。DOM操作全部在绑定后,交给框架处理。相当后端有了ORM一样,不用你手写SQL,提高生产力!

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-09-25 02:41:26

迷你 MVVM 框架 avalonjs 1.3.6 发布的相关文章

迷你MVVM框架avalonjs 实现上的难点有哪些

经过两个星期的性能优化,avalon终于实现在一个页面绑定达到上万个的时候不卡顿的目标(angular的限制是2000).现在稍作休息,总结一下avalon遇到的一些难题. 首先是如何监控的问题.所有MVVM要将VM中的属性与视图中的绑定属性关联起来大抵有如下三种方式:angular是对函数体取toString进行预编译,将里面的赋值语句,取值语句替换为set,get方法,然后通过特定方法进行脏检测触发,或手动触发:ko是对VM的属性用监控函数外包一层,全事件驱动触发:avalon是通过Obje

简述迷你MVVM框架avalon在兼容旧式IE所做的努力

很多时候,写代码就像砌砖头,只要我们不关心盖楼的原因.建筑的原理.土木工程基础和工程经验,就算我们砌了100栋高楼,我们也就只是一个砌砖工人,永远也成为不了一个工程师,更别说建筑师了.而那些包工头也只会把我们当成劳动力罢了.--左耳朵耗子 avalon在兼容旧式IE上做了大量工作,从而让它更接地气,完美地运行于国内的各种奇葩浏览器中. 首先是Object.defineProperties的模拟,正因为有这东西,才能让avalon是纯事件驱动地同步视图,而不用脏检测,从而获得更高的性能. //IE

vue,angular,avalon这三种MVVM框架优缺点_其它

本文的主要内容是参考官方文档说明总结而来: Vue.js Vue.js @尤雨溪 老师写的一个用于创建 web 交互界面的库,是一个精简的 MVVM.从技术角度讲,Vue.js 专注于 MVVM 模型的 ViewModel 层.它通过双向数据绑定把 View 层和 Model 层连接了起来.实际的 DOM 封装和输出格式都被抽象为了Directives 和 Filters.Vue.js和其他库相比是一个小而美的库,作者的主要目的是通过一个尽量简单的 API 产生可反映的数据绑定和可组合的视图组件

AJAX?框架DWR?2.0?M1?发布

ajax AJAX 框架DWR近日宣布,发布DWR 2.0 M1 2.0 M1 新版本. DWR(Direct Web Remoting) 项目是在Apache许可下的一个开源的解决方案,它供给那些想要以一种简单的方式使用AJAX和XMLHttpRequest的开发者.它具有一套Javascript功能集,它们把从HTML页面调用应用服务器上的Java对象的方法简化了.它操控不同类型的参数,并同时保持了HTML代码的可读性.DWR不是对一个设计的插入,也不强迫对象使用任何种类的继承结构.它和se

基于WPF系统框架设计(6) 整合MVVM框架(Prism)

我们基础的框架已经搭建起来了,现在整合MVVM框架Prism,在ViewModel做一些逻辑处理,真正把界面设 计分离出来. 这样方便我们系统开发分工合作,同时提高系统可维护性和灵活性. 具体的 Prism安装和Microsoft.Practices.Prism.dll获取,在这个网址:http://compositewpf.codeplex.com/ 跟Winform一样原始的模式: (1)现在看一下之前的设计的View: MainWindow.XAML源码: (2)MainWindow.xa

CYQ.Data 数据框架 V3.5 开源版本发布(源码提供下载)

 先说几句:    最近一直在忙微博粉丝精灵+微博人气精灵的微博精灵系列软件的事,简单说就是新浪微博营销这块的,提供基于新浪微博的各项服务. 同时也在寻找对网络(微博)营销的才子一起合作创业,感兴趣请Q我. 本人微博地址签名里应该有,这里也重复提一下:http://www.weibo.com/cyqdata   前言:    最近发现研究 CYQ.Data 框架的人比较多,虽然本人一年来没怎么再推这框架了,感觉用户就是喜欢沉淀多一些.年份久一点的. 由于V3.0的开源版本,在Access里可能有

Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)

 在本文将以MVVM Light Toolkit为例讲解MVVM框架在现实中的使用入门,首先我们在http://mvvmlight.codeplex.com/下载它的MVVM框架下来.也可以通过 http://files.cnblogs.com/chengxingliang/GalaSoft.MvvmLight.V3.rar 下载MVVM Light Toolkit.然后我们安装这个安装包,然后重新打开VS2010,新建一个项目,如下图所示:    Tip:MVVM分为Model.ViewMod

.NET的MVVM框架

转自 http://www.infoq.com/cn/news/2011/12/mvvm-frameworks-net 作者 Roopesh Shenoy 译者 李永伦 发布于 2011年12月15日 Model-View-ViewModel是 一种架构模式,主要在WPF.Silverlight和WP7开发里使用,它的目标是从视图层移除几乎所有代码隐藏(code-behind).交互设计 师可以专注于使用XAML表达用户体验需求,然后创建和视图模型的绑定,而视图模型则是由应用程序开发者开发和维护

我用Spring框架做了个新闻发布系统,功能经过测试全部实现,但是在访问页面时出现404错误

问题描述 我用Spring框架做了个新闻发布系统,功能经过测试全部实现,但是在访问页面时出现404错误,改怎么办?问题补充:我觉得是Tomcat部署上缺少了什么,做这个东西是为了联系Spring框架的使用,同样的工程我已经用手写的MVC模式做了一遍,用Struts又做了一遍,用Hibernate又做了一遍,不太可能是那么简单的问题.问题补充:我可以肯定是我的访问路径有问题,请告诉我在Struts-config.xml和ApplicationContext.xml里比较细节的配置经验吧.应该能解决