高性能迷你React框架anujs1.1.2发布
Posted 司徒正美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能迷你React框架anujs1.1.2发布相关的知识,希望对你有一定的参考价值。
anujs1.1.2在兼容官方React比以往更进一步,一共跑通293套测试,其中179套是官方React的测试。
在ref机制,owner机制,虚拟DOM更新机制,context传递机制,SVG生成策略上大大重构。是有史以来最多的更新级。但工作还没有完成,只是怕更新太多做了一次短暂的休整。
主要更新点:
- 修正 onChange 事件
- 重构 diffProps 模块的实现
- 支持组件的isMounted方法
- 添加beforePatch , afterPatch钩子
- 添加lib/ReactInputSelection.js
- 统一所有操作虚拟DOM的方法的参数(mountXXX, updateXXX, alignXXX系列)
1 第一个参数为旧真实DOM或旧虚拟DOM
2 第二个参数为新虚拟DOM
3 第三个参数为父虚拟DOM(可能不存在,那么后面直接跟第四,第五)
4 第四个参数为上下文对象
5 第五个参数为任务调度系系统的列队
- 使用全新的方式获取元素的命名空间
- 上线全新的节点排序算法(diffChildren)
- renderByAnu在全局渲染后应该置空CurrentOwner.cur, 防止影响其他虚拟DOM
- 完善createStringRef方法,应该能抛错与删除无用数据
- 上线全新的任务调度系统
- 重构unmountComponentAtNode方法
- 添加对两个虚拟DOM的引用都相同的情况下,检测子组件的contextType决定是否更新的策略
- 无状态组件支持模块模式(返回一个带生命周期钩子的纯对象,这些方法会像有状态组件那样被调用)
- 放松shouldComponentUpdate的限制,返回任何假值都阻止子孙更新
- 修正ref的更新方式
- shouldComponentUpdate返回假值时,当前的虚拟DOM应该吸纳旧虚拟DOM的有用信息
使用
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...
以上是关于高性能迷你React框架anujs1.1.2发布的主要内容,如果未能解决你的问题,请参考以下文章