React 性能:通过 Tree Shaking 提升性能

react 性能:通过 tree shaking 提升性能

tree shake 是现代 javascript 开发中的一项基本技术,特别是对于像 react 这样的库。它有助于从最终捆绑包中消除未使用的代码,从而减小文件大小并提高应用程序性能。

或者正如 mdn 所说的

tree shake 是 javascript 上下文中常用的术语,用于描述死代码的删除。

什么是树摇动?

tree shaking 是 javascript 捆绑器(如 webpack 和 rollup)中使用的术语,用于描述从最终 javascript 捆绑包中删除未使用的代码的过程。它的工作原理是分析代码库中的导入/导出语句,找出实际使用的代码部分,并消除其他所有内容。

“tree shake”这个名字来自于摇动一棵树并让未使用的树枝(代码)掉落的类比,只留下最终构建中必要的部分。

为什么 react 开发者应该关心 tree shaking?

作为 react 开发人员,减少 javascript 包的大小会对应用程序的性能产生重大影响。大捆绑会导致加载时间缓慢和用户体验不佳,尤其是在移动网络上。 tree shaking 有助于确保最终构建中仅包含您实际使用的代码,这可以显着提高性能。

tree shaking 在 react 中如何工作?

tree shaking 严重依赖于 es 模块 (esm)。当您使用 esm 语法导入和导出模块时,webpack 和 rollup 等捆绑器可以分析您的代码并删除未使用的导出。

例如,假设您正在使用一个大型实用程序库,但您只需要一个函数:

// bad practice: importing everythingimport * as lodash from 'lodash';

登录后复制

在这种情况下,即使您只使用一个函数,整个 lodash 库也会被捆绑。这效率低下并且会增加您的应用程序大小。

相反,您可以使用命名导入

// good practice: importing only what you needimport { debounce } from 'lodash';

登录后复制

这样,您的捆绑包中仅包含 debounce 函数,而排除了其余的 lodash 代码,从而使您的应用程序变得更小。

在 react 中启用 tree shaking 的最佳实践:

1.使用es模块(esm):

当您的代码和使用的库是用 esm 编写时,tree shaking 效果最佳。如果可能,请避免使用 commonjs,因为它不支持树摇动。

2. 仅导入您需要的内容:

如上所示,始终使用命名导入或导入特定函数而不是整个库。

3.消除副作用:

tree shaking 依赖于导入模块没有副作用的假设。 “副作用”可能是任何改变全局状态、修改变量或在模块本身之外执行代码的行为。确保您的模块不会产生可能阻止 tree shaking 工作的意外副作用。

4. 配置您的捆绑器:

确保您的捆绑器(如 webpack 或 rollup)已正确配置为 tree shaking。这通常包括启用生产模式以实现优化。

5.利用package.json“sideeffects”字段:

如果您正在使用库,甚至是您自己的项目,请确保在 package.json 中标记有副作用的文件。这有助于捆绑器了解什么可以安全地进行 tree-shaking。

示例:

"sideEffects": [  "*.css",  "*.scss"]

登录后复制

分析和测试 tree shaking 的工具:

webpack 包分析器:此工具可帮助您可视化包的内容并查看是否仍包含任何未使用的代码。源映射:使用源映射来跟踪最终包中包含的内容。

需要采取的想法:

对于想要构建高效、快速应用程序的 react(而不仅仅是)开发人员来说,tree shaking 是一项重要的优化技术。通过遵循最佳实践,例如使用 es 模块、仅导入必要的代码以及确保模块无副作用,您可以充分利用 tree shaking 并显着提高 react 应用程序的性能。

如果您希望提高应用程序的性能,那么实现 tree shaking 是一个很好的起点!

以上就是React 性能:通过 Tree Shaking 提升性能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2645823.html

(0)
上一篇 2025年3月7日 07:38:12
下一篇 2025年2月28日 14:01:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 通过 DumpsBoss ServiceNow 学习指南更智能地学习

    来自 DumpsBoss 客户的真实评价不要只相信我们的话 – 听听其他成功使用我们的 ServiceNow 考试转储通过认证考试的人的说法。Maria K.,IT 服务经理:“我一直在努力准备 ServiceNow 考试,直到找到 Dum…

    2025年3月7日
    200
  • 我喜欢 Deno

    问题 deno 稳定版本大约在 3-4 年前推出。当时,它受到了相当多的关注,因为 node.js 的创建者 ryan dahl 也是 deno 的赞助人。哈!你没听错。他为什么要创造一个新工具来和自己的“孩子”竞争? ryan dahl …

    2025年3月7日
    200
  • React 测试:综合指南

    React 是一个流行的 JavaScript 库,用于构建动态且高效的用户界面。为了确保这些应用程序正常运行并随着时间的推移保持可维护性,测试是必不可少的做法。本指南将探讨 React 测试的重要性、其各种类型、工具和最佳实践,帮助您创建…

    2025年3月7日
    200
  • Hobby API 收集和执行工具如何演变成产品

    在任何初创公司中,跨多个服务管理 api 是一个常见的挑战。 我们面临三个主要问题: 记录 api发布文档每当 api 发生变化时进行更新 每一个都有自己的一系列问题:如何做、在哪里做、使用什么工具以及谁将拥有所有权。 为了解决这个问题,我…

    2025年3月7日 编程技术
    200
  • 对可访问性的反对以及应对方法

    公司应该优先考虑可访问性,但这不是现实。以下是公司可能做出的 20 条体能歧视声明,以及促进无障碍的反回应: “这不是我们的目标受众” 你怎么知道? 24% 的人患有某种形式的残疾,您可能会排除 24% 的潜在客户。相比之下,英国棕色眼睛的…

    2025年3月7日
    200
  • 如何在 Mac 上退出全屏:分步指南

    高效地浏览 Mac 可以显着提高您的工作效率。 Mac 用户最常见的疑问之一是了解如何退出全屏模式。无论您是在观看电影、处理文档还是探索应用程序,了解如何在全屏和常规视图之间切换都可以让您的 Mac 体验更加流畅。 本指南将引导您了解在 m…

    2025年3月7日
    200
  • Async/Await 与 Promises:JavaScript 初学者简单指南

    您是否有过这样的感觉:您在咖啡店排队等候 javascript 来取拿铁咖啡?异步编程常常给人这样的感觉——同时处理多个订单可能会让您陷入等待。幸运的是,promises 和 async/await 等工具可确保流程保持平稳高效,让您的代码…

    2025年3月7日
    200
  • 为什么 React 会让你感到惊讶(以及如何驯服它)

    如果您曾经使用过 react,您可能有过自我怀疑的时刻。我也遇到过这种情况——想知道我是否遗漏了一些基本的东西,结果发现问题不在于我,而在于 react 的特性。 在这里,我将分享一些意想不到的行为、背后的原因以及我自己的经历。希望这能让你…

    2025年3月7日
    200
  • 我评价 JAVASCRIPT 框架 ⭐⭐⭐

    所以今天我将分等级评价一些著名的 javascript 框架作品。我在网上看到一些人这样做,所以我心想为什么不尝试一下呢。你们也可以看看我的世界。看看我如何看待不同的编程语言。这会很有趣,所以让我们开始吧。 反应 所以,从最顶层的 Java…

    2025年3月7日 编程技术
    200
  • 构建 Expressjs 后端服务应该很容易!

    构建 node.js api 服务应该很容易,但许多开发人员在需要启动新的后端服务时却遇到了困难。每个月都会有新的方法来设置您的 node.js 项目、新的身份验证或安全性最佳实践、新框架,或者您最喜欢的 npm 包自上次使用以来发生了重大…

    2025年3月7日
    200

发表回复

登录后才能评论