摘要:本周在支持机票的项目中对做了大量改进,包括性能上与结构上的改进。但通过一些简化改改良,代码的可靠性大大提高了。此外,还有周边的优化在目录下提供一个,用于在旧式中替换。改善,里面内置了一个补丁,也是用于改善性能,或中的性能好差。
本周在支持机票的项目中对anujs做了大量改进,包括性能上与结构上的改进。与1.1.3一样,还是差一个组件就完全兼容阿里的antd UI库。
框架本身的改进有:
修正flushUpdaters中updater对象的泄露问题(需要clearArray一下)
优化diffChildren的逻辑,防止出现parentNode等于null的情况(比如为文本节点取firstChild)
简化ControlledComponent与dispose模块
处理updateElement方法中两个虚拟DOM的引用一样时,调用flattenChildren时,旧的vchildren丢失的情况
移除Refs中的createStringRef,createInsanceRef,添加fireRef,
重构detachRef,clearRefs,cloneElement,createElement有关ref的部分,尽量减少闭包的应用
将updateQueue移出所有diff方法的传参列表,合并到调度器中
新添React16的createPortal API
上面什么修正内存泄露与减少闭包,都是在IE下才发现的问题,在chrome下一点事都没有。但通过一些简化改改良,代码的可靠性大大提高了。
此外,还有周边的优化
在lib目录下提供一个ReduxIE.js,用于在旧式IE中替换redux。因为官方redux里面用到了一个isPlainObject方法,这个方法是由lodash库提供的,而这个方法的源码本身是来源于jQuery3.x,没有针对IE进行处理,性能很差。我将它替换为jQuery1.x的isPlainObject,就很正常运作了。
改善ReactIE.js,里面内置了一个Object.keys补丁,也是用于改善性能,es5shim.js或babel polyfill中的Object.keys性能好差。
function needFix(fn) { return !/native code/.test(fn); } function keysPolyfill() {//解决IE下Object.keys的性能问题 if (needFix(Object.keys)) { Object.keys = function(obj) { var a = []; for(var k in obj) { if (obj.hasOwnProperty(k)) { a.push(k); } } return a; }; } } keysPolyfill(); setTimeout(keysPolyfill, 0); setTimeout(keysPolyfill, 100);
使用
npm i anujs
或者使用架手架 https://github.com/Levan-Du/a...
npm i -g anu-cli
webpack.config中如何代替原来用React编写的项目
resolve: { alias: { "react": "anujs", "react-dom": "anujs", // 若要兼容 IE 请使用以下配置 // "react": "qreact/dist/ReactIE", // "react-dom": "qreact/dist/ReactIE", // 如果引用了 prop-types 或 create-react-class // 需要添加如下别名 "prop-types": "qreact/lib/ReactPropTypes", "create-react-class": "qreact/lib/createClass" //如果你在移动端用到了onTouchTap事件 "react-tap-event-plugin": "anujs/lib/injectTapEventPlugin", } },
欢迎大家为anujs加星星与试用!!!
https://github.com/RubyLouvre...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/89199.html
摘要:是一款高性能框架,是目前世界上对兼容最好的迷你库。自起,相继推出,与等新,表明官方正积极由纯库向大而全的框架演变,它将会越来越好用。一些迷你库可能跟不上步伐,现在也只有有这实力跟进。 anujs1.3.0是一款高性能React-like框架,是目前世界上对React16兼容最好的迷你库。 自React16起,相继推出createContext,createPortal, createR...
摘要:现在只差一个组件就完全支持阿里的库了。一共跑通个测试应该是全世界最接近官方的迷你框架了。以后的工作就是把的一些新特性支持了,包括组件返回数字字符串数组,钩子与。随着代码的增加,我会将一些废弃的方法拆分出来。在打包时,根据你们的喜好进行选择。 anujs现在只差一个组件(mention)就完全支持阿里的antd UI库了。一共跑通346个测试, 应该是全世界最接近官方React的迷你框架...
摘要:这次更新主要是改善了对焦点的处理及的语法糖的支持优化的性能,将原方法内部用到函数与对象提到全局上来,这就比官方的对象池技术更能提升性能。 anu1.2.1这次更新主要是改善了对焦点的处理及react16.2的Fragment语法糖的支持 优化fiberizeChildren的性能,将原方法内部用到函数与对象提到全局上来,这就比官方的对象池技术更能提升性能。 修复受控组件在textar...
摘要:本版本主要是对的组件进行最后一次修复工作,除了组件,都支持了。其次它是市场上唯一支持特征的库。明年也会搞一个状态库,对异步渲染友好。路由,状态库,等一套东西与一起配合使用。 本版本主要是对antd3的组件进行最后一次修复工作,除了mention组件,都支持了。 明年的精力就集中异步渲染与后端渲染上。anujs的体积经过几个版本的迭代,体积有所增大24kb(没有压缩的情况),但还是远远少...
摘要:在兼容官方比以往更进一步,一共跑通套测试,其中套是官方的测试。在机制,机制,虚拟更新机制,传递机制,生成策略上大大重构。是有史以来最多的更新级。但工作还没有完成,只是怕更新太多做了一次短暂的休整。 anujs1.1.2在兼容官方React比以往更进一步,一共跑通293套测试,其中179套是官方React的测试。 在ref机制,owner机制,虚拟DOM更新机制,context传递机制,...
阅读 2255·2021-11-17 09:33
阅读 813·2021-10-13 09:40
阅读 532·2019-08-30 15:54
阅读 743·2019-08-29 15:38
阅读 2385·2019-08-28 18:15
阅读 2447·2019-08-26 13:38
阅读 1802·2019-08-26 13:36
阅读 2098·2019-08-26 11:36