高性能迷你React框架anujs1.1.2发布

#1

anujs1.1.2 在兼容官方 React 比以往更进一步,一共跑通 293 套测试,其中 179 套是官方 React 的测试。

在 ref 机制,owner 机制,虚拟 DOM 更新机制,context 传递机制,SVG 生成策略上大大重构。是有史以来最多的更新级。但工作还没有完成,只是怕更新太多做了一次短暂的休整。

主要更新点:

  1. 修正 onChange 事件

  2. 重构 diffProps 模块的实现

  3. 支持组件的 isMounted 方法

  4. 添加 beforePatch, afterPatch 钩子

  5. 添加 lib/ReactInputSelection.js

  6. 统一所有操作虚拟 DOM 的方法的参数(mountXXX, updateXXX, alignXXX 系列)

  7. 第一个参数为旧真实 DOM 或旧虚拟 DOM

  8. 第二个参数为新虚拟 DOM

  9. 第三个参数为父虚拟 DOM(可能不存在,那么后面直接跟第四,第五)

  10. 第四个参数为上下文对象

  11. 第五个参数为任务调度系系统的列队

  12. 使用全新的方式获取元素的命名空间

  13. 上线全新的节点排序算法(diffChildren)

  14. renderByAnu 在全局渲染后应该置空 CurrentOwner.cur, 防止影响其他虚拟 DOM

  15. 完善 createStringRef 方法,应该能抛错与删除无用数据

  16. 上线全新的任务调度系统

  17. 重构 unmountComponentAtNode 方法

  18. 添加对两个虚拟 DOM 的引用都相同的情况下,检测子组件的 contextType 决定是否更新的策略

  19. 无状态组件支持模块模式(返回一个带生命周期钩子的纯对象,这些方法会像有状态组件那样被调用)

  20. 放松 shouldComponentUpdate 的限制,返回任何假值都阻止子孙更新

  21. 修正 ref 的更新方式

  22. shouldComponentUpdate 返回假值时,当前的虚拟 DOM 应该吸纳旧虚拟 DOM 的有用信息

使用

npm i anujs

或者使用架手架 https://github.com/Levan-Du/anu-cli

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 加星星与试用!!!

3 Likes
#2

给大牛点个赞!

#3

按钮就在上面, 赶紧点啊…