高性能迷你React框架anujs1.0.5发布】的更多相关文章

本版本由于得到业务线同学的大力支持,掀出许多问题,因此改进地方良多,为anujs在完美替换React的道路上前进了不少.现在anujs经测试可以运行于IE7中.至少怎么做可以参看官网,https://rubylouvre.github.io/anu/, 而它在高级浏览器上使用了requestAnimationFrame,性能更进一步,真实反映本文的标题,又快又小.体积比之前更少了. event.originalEvent更名为 event.nativeEvent 修正polyfill中forEa…
实现对createFactory的支持,优化scheduler与dispose机制,提供ReactShim文件,跑通公司内部4套测试 npm i anujs 或者使用架手架 https://github.com/Levan-Du/anu-cli npm i -g anu-cli…
anujs现在只差一个组件(mention)就完全支持阿里的antd UI库了.一共跑通346个测试, 应该是全世界最接近官方React的迷你框架了. 以后的工作就是把React16的一些新特性支持了,包括组件返回数字.字符串.数组, componentDidCatch钩子与createPortal. 主要更新点: 抽象出一个Update类,用于封装组件实例上的所有私有数据 抽象出一个instantiateComponente用于同时实例化有状态与无状态组件,从此再没有 mountStatele…
本版本对setState与forceUpdate内部依赖的setStateImpl进行了重构,性能稳定在60pfs之上.并且将组件实例的所有内部方法与属性都改成以___开头. https://github.com/RubyLouvre/anu disabled的元素不能触发点击事件 修正mouseenter/mouseleave在IE6-8中的BUG,涉及到relatedTarget的正确获取与LCA处理 简化alignVnode的逻辑,减少插入列队的生成 重构setStateImpl,实现以列…
迷你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…
本版本最重要的特性是引进了AMD规范的模块加载器,亦即原来mass Framework 的并行加载器, 不同之处,它引进了requirejs的xxx!风格的插件机制,比如要延迟到DOM树建完时触发,是使用ready!, 要加载css文件是使用css!css_path. 加载器在移动设备或PC的单页应用不可或缺.根据公司内容的不完全统计,手机等浏览器的性能只是PC的十分之一左右,而且测试对象还是公司的有钱同事的手机,什么IP,三星GALAXY. 在过去的一周,整合angular, requirej…
在本版本主要是性能优化,添加一些有用的功能(如回调什么的),离成品阶段不远了. 修正 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…
本版本最大的改进是引进了ms-with绑定,现在可轻松遍历对象了. 改进列表如下: 重新使用082的scanNodes方法,因为有关旧式IE下UI渲染锁死的问题已经解决了. 优化each绑定与Collection 添加CSS3 animationend事件支持 添加ms-with绑定 fix IE9-10获取option元素的value的BUG 改良 AMD加载器与jQuery这些在内部使用了全局define方法的库的兼容问题 抽象setNumber方法来处理splice,slice这两个数组方…
本版本修了一些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 重构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绑定,…
anu, 读作[安努],原意为苏美尔的主神. anu是我继avalon之后又一个新框架(github仓库为https://github.com/RubyLouvre/anu, 欢迎加星与试用) 此框架的创立之意有三: 提升性能, 虽然React的性能相对于传统的MVVM框架是很厉害了,但近几年冒出来的diff算法比官方版更优秀,官方版积重难返,很难短时期吸收这些成果.anu则小船好调头,第一时间收纳其中.性能是王道.天下武功,唯快不破. 压缩体积. React+React-dom加起来有三万多行…
理想是丰满的,现实是骨感的,react早期的版本虽然号称支持IE8,但是页面总会不自觉切换到奇异模式下,导致报错.因此必须让react连IE6,7都支持,这才是最安全.但React本身并不支持IE6,7,因此anu使有用武之地了. https://github.com/RubyLouvre/anu 但光是anu不行,兼容IE是一个系统性的工程,涉及到打包压缩,各种polyfill垫片. 首先说一下anu如何支持低版本浏览器.anu本身没有用到太高级的API,像Object.definePrope…
本版本只要做了如下改进 重构ui绑定 fix scanTag bug ms-include 的值必须不为空值,否则不做任何操作.…
本版本添加了许多有用的功能,得益于用户量的增大,一些隐性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…
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…
经过2个小版本的试水, avalon1.5这个全新的架构也终于成熟了. 首先是组件的配置项,名字改了不少,让大家都满意. ms-duplex, ms-include, ms-if等指令的BUG修复. 一些oniui组件也成功转换成新组件形式,总结一些套路. 当然,最后我是想像react那样不使用 setTimeout就能实现双缓冲技术.这个会加大投入学习react的源码. 本周周六,我在北京苏州街的西海国际有场分享,是说自定义标签,分享一下avalon的新组件是怎么写的. https://git…
主要带来以下三大改进: 全新的兼容AMD规范requirejs API的加载器 使用gulp进行构建 兼容性更好的触屏模块 最近还修改了avalon.modern bind方法的BUG,自定义过滤器的BUG,html过滤器的BUG, date过滤器的BUG…
React 16.3.0 已发布,React 是 Facebook 推出的一个为数据提供渲染为 HTML 视图,用来构建用户界面的开源 JavaScript 库. React 视图通常采用包含以自定义 HTML 标记规定的其他组件的组件渲染.React 为程序员提供了一种子组件不能直接影响外层组件("data flows down")的模型,数据改变时对 HTML 文档的有效更新,和现代单页应用中组件之间干净的分离. 更新内容: React Add a new officially s…
前端开发工具包 WijmoJS 在2019年的第二个主要版本 V2019.0 Update2 已经发布,本次发布涵盖了React 和 Vue 框架下 WijmoJS 前端组件的功能增强,并加入更为易用且灵活的撤消/重做功能和模板字符串支持. WijmoJS 前端开发工具包由多款灵活高效.零依赖.轻量级的纯前端控件组成,如表格控件 FlexGrid.图表控件 FlexChart.数据分析 OLAP 等,完美支持原生 JavaScript,以及 Angular.React.Vue.TypeScrip…
ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载. GitHub项目地址:点击访问 ThinkPHP5在保持快速开发和大道至简的核心理念不变的同时,PHP版本要求提升到5.,对已有的CBD模式做了更深的强化,优化核心,减少依赖,基于全新的架构思想和命名空间实现,是ThinkPHP突破原有框架思路的颠覆之作,其主要特性包括: 基于命名空间和众多PH…