halo 大家好,我是 132,然后就是…… 经过最近几天的探讨,fre 终于发了一个……能跑起来的版本了

这次的更新主要是针对 diff 和 proxy

我一直追求一种【刚刚好】的状态,就是代码量缩减到最简,然后性能在崩坏的边缘不断试探

fre 就是一个这样的框架,你可以看到它只有300+行代码,却麻雀虽小,五脏俱全。

install

yarn add fre -S
复制代码

use

import{ observe, html, mount } from './src'function counter() {const data = observe({count: 0})return html`<div><h1>${data.count}</h1><button onclick=${() => {data.count++}}>+</button><button onclick=${() => {data.count--}}>-</button></div> `
}mount(html`<${counter} />`, document.body)
复制代码

proxy

proxy 大家应该都知道,是用来做劫持的,上个时代同样作用的是 Object.defineproperty

  const data = observe({count: {num: 0}})console.log(data) //{count:Proxy}console.log(data.count) //{num:Proxy}
复制代码

proxy 有个很大的坑,就是默认只能劫持一层对象,多层嵌套就直接 gg

就和浅拷贝一样,它只能给第一层对象“加壳”

市面上的 proxy 的库都做了处理,比如 immer 通过递归浅拷贝,将深层嵌套的对象的 key 变成一层的(可以去看下源码)

这个过程的代码量还是有点大的其实

而 fre 却给出了一个更简单的递归方式,性能也会很好

keyed-diff-patch

这次 diff 的更新,其实还是很坑的,我到现在都有点捋不顺 其实 react 的那种方案比较容易理解了,diff 仅仅是两个 vnode 的事情,我不需要额外关心

preact 的方案比较难理解,尤其是加了 keyed 后,可以说正常人真的理解不了::>_<::

我是正常人,我没理解::>_<::

keyed-diff-patch,就是,如果孩子被 keyed 了,然后就会存到内存里,下次直接取出来用

这也是 react 为什么遍历的时候最好要加唯一的 key 的原因了

fre 给出来一个最小实现,同时完成度还不算低

todo……

下一步要做什么呢,我觉得现在的 fre 完成度已经可以了,可以用于一些小项目了

要说下一步要搞的大机制的话,我是挺想研究研究 time slicing 的,争取研究个最小实现,不要 fiber

fre 官网:fre.js.org

fre github:github.com/132yse/fre

欢迎试用与 star !

[开源]Fre 发布 0.5 版本,更新 diff-patch 和 proxy 方案相关推荐

  1. 开源多云技术平台——Choerodon猪齿鱼发布0.16版本

    Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境 ...

  2. vos2009 校验版本超时_开源多云应用平台 Choerodon猪齿鱼发布0.14版本

    Choerodon猪齿鱼是一个开源多云应用平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台, ...

  3. 开源多云应用平台 Choerodon猪齿鱼发布0.14版本

    Choerodon猪齿鱼鱼是一个开源多云应用平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台 ...

  4. 开源多云技术平台——Choerodon猪齿鱼发布0.19版本

    Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境 ...

  5. 开源企业级数字化服务平台——Choerodon猪齿鱼发布0.11版本

    Choerodon猪齿鱼是一个开源企业服务平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台, ...

  6. ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能

    微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...

  7. ML.NET 发布0.11版本:.NET中的机器学习,具有TensorFlow和ONNX的新功能

    微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. ML.NET 0.11发布:.NET中的机器学习,具有TensorFlow和ONNX的新功能 ML.NET 0.1 ...

  8. 解读|TARS开源项目发布Go语言版本 1

    解读|TARS开源项目发布Go语言版本 文章转自开源中国 导语:近日,Tars 开源项目在上海发布并开源了 Go 语言版本,其性能与 C++ 版本相当,比 gRPC 的性能高 5 倍. --编者 Ta ...

  9. 开源企业级数字化服务平台——Choerodon猪齿鱼发布0.8版本

    Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台 ...

最新文章

  1. 区块链挖矿的钱从哪来 区块链挖矿怎么挣钱
  2. leetcode310. Minimum Height Trees
  3. c++实现解析文件路径
  4. 4-8岁那些最难的数学概念,美国老师用一套绘本让孩子秒懂
  5. .net类库学习(一)System.object
  6. PL/SQL-FOR UPDATE 与 FOR UPDATE OF的区别
  7. pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计
  8. java代码发送请求并传参_如何优化您的请求请求并使代码审核人员满意
  9. 资管新规 2018年4月27日
  10. 125K非接触IC卡读卡头
  11. matlab 地形图案例,matlab-画地形图
  12. 为什么小企业更应该关注人工智能?
  13. 用计算机撩人套路,各种撩人的套路句子40句
  14. 模拟电路-模拟加法器的设计和仿真
  15. android代码图片编辑,怎样修改android系统apk软件里面的代码和图片?
  16. 传递Bitmap + 图片压缩处理 并保存 + 壁纸设置 总结
  17. Day 07 类、魔方方法
  18. AWS Boto3 使用介绍(一)
  19. Sequence contains more than one matching element
  20. 修道士和野人java_修道士和野人问题

热门文章

  1. 基于web的房屋房源中介管理系统
  2. win10开机wifi图标消失 但是wifi可用
  3. jquery 自定义函数方法
  4. 【UE4 全局光照明】虚幻引擎学习之路:渲染模块之全局光照明 by UWA侑虎科技
  5. Docker安装Redis并配置文件启动
  6. 【深度学习】OCR文字识别—基于CTC/Attention/ACE的三大解码算法
  7. android答疑解惑 知识星球
  8. 【PLA】【pocket算法】
  9. 英语语法简介-句子结构
  10. bio和bieos哪个标注模式好_2021秋招-NLP基础任务模型-NER