发布于 2026-01-06 3 阅读
0

用 Preact 替换 React。这很简单,而且很值得。

用 Preact 替换 React。这很简单,而且很值得。

我考虑卖出Preact已经很久了。毕竟,卖东西很容易:

  • 与 React 生态系统 100% 兼容(某种程度上)
  • 小得多(js 包大小)
  • 速度更快(性能)

大约两年前,我参加了悉尼的一个本地聚会,演讲者分享了澳航如何在部分业务中成功集成 Preact。这很有意思,而且他讲得也很有说服力。然而,鉴于当时几乎所有人都在使用 React,我觉得这任务太艰巨了,所以一直没花时间深入研究。直到最近。

我当时正在优化 SaaSHub 的页面加载速度,其中一个方法是减小 JS 包的大小。我试用了webpack-bundle-analyzersource-map-explorer,发现 React 和 react-select 占用了 35% 的库资源。然后我想起了preact ……于是决定重新审视一下它。

结果发现,这项任务与其说是困难,不如说是令人畏惧。仔细阅读文档后,我发现切换到 Preact 的整个过程只需要将其添加到packages.json 文件中,并在 webpack 的构建配置中添加相关的别名即可:

environment.config.resolve.alias = {
  "react": "preact/compat",
  "react-dom/test-utils": "preact/test-utils",
  "react-dom": "preact/compat",
  // Must be below test-utils
}

module.exports = environment
Enter fullscreen mode Exit fullscreen mode

并在应用程序的某个地方导入了'preact/debug':

import 'preact/debug'

就这么简单。一切都运行正常,无需修改任何一行代码。当然,对于代码更复杂的 Web 应用程序来说,这个过程可能会更复杂一些。

有哪些好处:

  • SaaSHub的 JS 包文件大小减少了 20%:从 577k 减少到 460k
  • 更快的 JS(虽然我没有进行基准测试,也没有感觉到它很慢)

最后,如果你正在优化你的JS代码,而且你的环境配置不是特别复杂,我强烈建议你尝试一下Preact。它可能比你想象的要容易。

PS:下一步是Downshift替换react-select。我已经用它实现了一个小组件,效果非常棒。可惜的是,这次迁移需要修改很多代码。

文章来源:https://dev.to/saashub/replacing-react-with-preact-it-was-easy-and-worth-it-1fb0