网站首页 > 基础教程 正文
近日,高级软件工程师 Ben Sangster 宣布 Etsy 已从 React v15.6 迁移到了 Preact 10 。Preact 是 MIT 许可下的开源软件,比 React 小得多,性能也比 React 快,Sangster 认为采用 Preact 能降低迁移大型代码库产生的风险。
我们用 Preact 替换掉了全部的 React v15.6 。这是一个巨大的胜利。与迁移到 v16 相比,迁移到 Preact 要容易得多(对旧代码的重写或重构要少得多)。
Sangster 表示迁移是无缝的,React v15.6 和 Preact 可以使用完全相同的 client,对于 Etsy 的开发人员来说,真正重要的改进是他们可以开始编写更现代的 React。
在相关博客文章中,Sangster 详细解释了 Etsy 迁移到 Preact 而不是最新版 React 的三个原因。
首先,采用 Preact 能最大程度地降低迁移风险。开发人员一般都比较喜欢React 16 的新特性(例如,error boundaries、fragments、错误堆栈跟踪、自定义 DOM 属性、React 16.8 中的 hooks),虽然 React 16.0 文档提到了一些小的重大更改,但也有不少开发人员报告了迁移的痛苦。Discord 的 Michael Greer 说:“并不是所有的 package error 都那么容易被发现,这才是真正的痛苦所在。我们遇到了一个错误,花了 2 天时间才找到对应的 library,你可能也会遇到同样的问题。”另外,routing library 是许多 Web 应用程序的关键依赖项,也可能会导致迁移出错。
Sangster 解释说,总体而言,Preact 能更好地控制迁移风险:
- Preact 的 API 与 React 兼容,这意味着我们不用进行任何更改。
- 由于 Preact 强调与 React v15 和 React v16 的兼容性,迁移到 Preact v10.4.2 将变得更加容易。
- 从开发人员工具的角度来看,采用 Preact 似乎没有任何重大障碍。
其次,Etsy 的前端系统团队已经在使用 Preact。在 Etsy 中统一使用 Preact 可能会使开发人员的生活更轻松。
再次,Preact 的包大小(Preact v10.4.5 为 4KB)比 React 的小六倍(React v16.13.1 添加react和 react-dom 之后为 38.5KB)。JavaScript 体量越大,延迟 (time to interactive),也就越大,消耗的内存和 CPU 也会越大。
Sangster 强调说:“我们有很多古老的‘无主’代码和很多旧的库,升级到 React 16 会导致一些 API 问题(尤其是 Portals/legacy Context/refs),需要做大量的工作才能够解决。相反,我们迁移到 Preact,可以将代码重构为可用的、最现代的东西,而不需要去做同步升级组件/库这些事情。”
更多细节:https://github.com/mq2thez/blog/blob/main/upgrade-react-etsy/preact-vs-react.md
- 上一篇: 面向函数式编程,前端的必然发展趋势
- 下一篇: React 最常用的函数(备忘查询)
猜你喜欢
- 2024-11-24 React源码分析与实现(一):组件的初始化与渲染「实践篇」
- 2024-11-24 React 最简单的入门应用项目
- 2024-11-24 「干货」深入浅出React组件逻辑复用的那些事儿
- 2024-11-24 「干货满满」React Hooks 最佳实践
- 2024-11-24 React开发必须知道的34个技巧
- 2024-11-24 React组件应该如何封装?
- 2024-11-24 React.js前端框架初学技术总结
- 2024-11-24 前端架构师成长之路:5 分分钟搞懂面试官必问 React 题
- 2024-11-24 只会Vue的我,用两天学会了react,这个方法您也可以
- 2024-11-24 react高质量笔记_9(Diffing算法)
- 最近发表
-
- 语言教育项目实战之一:Ubuntu下安装Python环境
- spark+python环境搭建(spark环境搭建方式)
- VSCODE搭建python开发环境教程(vscode开发python 必备插件)
- 阿六带你用python appium搭建app自动化测试环境
- 【200920】在Windows上搭建Python2.7环境
- DevOps系列之——python编译环境搭建
- 在Mac中使用pyenv管理Python版本:从安装到虚拟环境的全流程指南
- python使用技巧之环境搭建(办公自动化方向)
- 使用IDEA写Python之pytest环境搭建及...
- Python+Appium环境搭建与自动化教程
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)