[开源]Fre 发布 0.5 版本,更新 diff-patch 和 proxy 方案
这次的更新主要是针对 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 方案相关推荐
- 开源多云技术平台——Choerodon猪齿鱼发布0.16版本
Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境 ...
- vos2009 校验版本超时_开源多云应用平台 Choerodon猪齿鱼发布0.14版本
Choerodon猪齿鱼是一个开源多云应用平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台, ...
- 开源多云应用平台 Choerodon猪齿鱼发布0.14版本
Choerodon猪齿鱼鱼是一个开源多云应用平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台 ...
- 开源多云技术平台——Choerodon猪齿鱼发布0.19版本
Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境 ...
- 开源企业级数字化服务平台——Choerodon猪齿鱼发布0.11版本
Choerodon猪齿鱼是一个开源企业服务平台,基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台, ...
- ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...
- ML.NET 发布0.11版本:.NET中的机器学习,具有TensorFlow和ONNX的新功能
微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. ML.NET 0.11发布:.NET中的机器学习,具有TensorFlow和ONNX的新功能 ML.NET 0.1 ...
- 解读|TARS开源项目发布Go语言版本 1
解读|TARS开源项目发布Go语言版本 文章转自开源中国 导语:近日,Tars 开源项目在上海发布并开源了 Go 语言版本,其性能与 C++ 版本相当,比 gRPC 的性能高 5 倍. --编者 Ta ...
- 开源企业级数字化服务平台——Choerodon猪齿鱼发布0.8版本
Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链.微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台 ...
最新文章
- 区块链挖矿的钱从哪来 区块链挖矿怎么挣钱
- leetcode310. Minimum Height Trees
- c++实现解析文件路径
- 4-8岁那些最难的数学概念,美国老师用一套绘本让孩子秒懂
- .net类库学习(一)System.object
- PL/SQL-FOR UPDATE 与 FOR UPDATE OF的区别
- pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计
- java代码发送请求并传参_如何优化您的请求请求并使代码审核人员满意
- 资管新规 2018年4月27日
- 125K非接触IC卡读卡头
- matlab 地形图案例,matlab-画地形图
- 为什么小企业更应该关注人工智能?
- 用计算机撩人套路,各种撩人的套路句子40句
- 模拟电路-模拟加法器的设计和仿真
- android代码图片编辑,怎样修改android系统apk软件里面的代码和图片?
- 传递Bitmap + 图片压缩处理 并保存 + 壁纸设置 总结
- Day 07 类、魔方方法
- AWS Boto3 使用介绍(一)
- Sequence contains more than one matching element
- 修道士和野人java_修道士和野人问题