”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 优化 Next.js 应用性能的经过验证的技巧 ⚡️

优化 Next.js 应用性能的经过验证的技巧 ⚡️

发布于2024-11-08
浏览:128

Proven Tips to Optimize Performance in Your Next.js App ⚡️

优化 Web 应用程序的性能对于提供快速、流畅的用户体验至关重要。

借助 Next.js 这个强大的 React 框架,您可以利用许多内置功能来提高应用程序的速度和效率。

以下是让 Next.js 应用获得最佳性能的十个关键策略:


1. 仅加载您需要的 JavaScript 和 CSS

为了避免不必要的文件使您的应用程序变得臃肿,请确保您仅加载所需的 JavaScript 和 CSS。

Next.js 默认情况下自动对 JavaScript 进行代码分割,这意味着每个页面仅加载其功能所需的 JS。

同样,避免全局导入大型 CSS 文件 - 使用模块化或范围内的 CSS 来减少每个页面上加载的未使用 CSS 的数量。

如何实施:

  • 根据需要动态导入组件。
  • 保持 CSS 模块导入的范围仅限于特定组件。
import styles from './button.module.css'; // CSS module

const Button = () => {
  return ;
};

2. 依赖的延迟加载

延迟加载是一种缩短加载时间的强大技术。它确保仅在需要时加载大型或不太关键的组件。

这会减少初始包大小,从而加快页面首次有意义的渲染速度。

如何实施:

Next.js 支持动态导入延迟加载非必需组件。

import dynamic from 'next/dynamic';

const HeavyComponent = dynamic(() => import('./HeavyComponent'), {
  ssr: false,
});

export default function Home() {
  return ;
}

3. 使用 Next.js 中的组件

Next.js 提供了内置的 组件,可以针对不同的屏幕尺寸和格式自动优化图像。

此组件可确保图像延迟加载,并在可用时以 WebP 等现代格式提供,从而显着提高性能。

如何实施:

import Image from 'next/image';

export default function Home() {
  return (
    An optimized image
  );
}

4. 更喜欢 CSS 而不是 JavaScript

尽可能使用 CSS 来实现动画和过渡,而不是 JavaScript。

CSS 动画通常性能更高,因为它们可以利用硬件加速,而基于 JavaScript 的动画可能会导致卡顿和性能瓶颈。

例子:

不要使用 JavaScript 来实现简单的淡入效果,而是使用 CSS 过渡。

.fade-in {
  opacity: 0;
  transition: opacity 0.5s ease-in;
}

.fade-in-visible {
  opacity: 1;
}

5.避免一开始就显示加载程序

加载旋转器或骨架屏幕可以给用户一种进步感,但它们也可能表明您的应用程序很慢。

不要一开始就显示加载程序,而是专注于优化您的应用程序以快速、渐进地加载内容。

如何实施:

  • 使用服务器端渲染 (SSR) 或静态站点生成 (SSG) 预先加载内容。
  • 主要内容呈现后,延迟加载页面中不太重要的部分。

6.使用Next.js字体优化

如果处理不当,字体会减慢加载时间。 Next.js 具有内置的字体优化功能,它会自动为您的应用选择最佳的字体加载策略以提高性能。

如何实施:

使用内置的 Google Fonts 集成以最佳性能加载字体。

import { Inter } from 'next/font/google';

const inter = Inter({ subsets: ['latin'] });

export default function Home() {
  return 
Hello, world!
; }

7. 脚本优化

仅在必要时加载外部脚本。如果脚本对于特定页面而不是整个应用程序至关重要,请避免全局加载它。

Next.js 允许您使用 组件控制脚本加载的方式和时间。

如何实施:

import Script from 'next/script';

export default function Home() {
  return (
    
      >
  );
}

优化策略:

  • 对非必要脚本使用strategy="lazyOnload"。
  • 对用户交互之前所需的关键脚本使用strategy="beforeInteractive"。

8. 删除未使用的包

随着时间的推移,随着项目的发展,您可能会积累未使用的依赖项,从而使您的包变得臃肿。

使用 depcheck 等工具定期检查并删除未使用的软件包。

如何实施:

在项目中运行 depcheck 以查找并删除未使用的依赖项。

npx depcheck

9. 检查当前捆绑包大小

密切关注包大小以防止性能下降非常重要。

@next/bundle-analyzer 工具可帮助您可视化包中每个模块的大小,从而更轻松地识别和优化大型依赖项。


10.使用服务器组件

Next.js 13 引入了服务器组件,它允许您在服务器上渲染页面的部分内容,并仅向客户端发送最少的 JavaScript。

这可以大大减少客户端 JavaScript 的数量,从而提高性能。


结论

优化 Next.js 应用程序的性能是一个持续的过程,但通过遵循这些最佳实践,您可以显着减少加载时间并改善用户体验。

实施这些策略可确保您的应用从一开始就快速、响应灵敏且高效!


快乐编码!

版本声明 本文转载于:https://dev.to/alisamir/proven-tips-to-optimize-performance-in-your-nextjs-app-lpc?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Node.js 傻瓜指南 - MongoDB 和 Fastify
    Node.js 傻瓜指南 - MongoDB 和 Fastify
    O que é Node.js? Node.js, uma plataforma construída sobre o motor de JavaScript V8 do Google Chrome, revolucionou o desenvolvimento backend n...
    编程 发布于2024-11-08
  • 如何使用 Joda Time 将日期字符串解析为 DateTime 对象并避免“无效格式”错误?
    如何使用 Joda Time 将日期字符串解析为 DateTime 对象并避免“无效格式”错误?
    使用 Joda Time 将日期字符串解析为 DateTime 对象处理日期和时间数据时,通常需要转换日期作为字符串存储到结构化对象中以供进一步处理。 Joda Time 库提供了一套全面的工具,用于处理 Java 中的日期和时间操作。一个常见任务是将日期字符串转换为 DateTime 对象。但是,...
    编程 发布于2024-11-08
  • 如何解决 PHP 中的“每个引号前都有斜杠”问题?
    如何解决 PHP 中的“每个引号前都有斜杠”问题?
    理解“引号前的斜杠”问题在某些情况下,PHP网页可能会遇到提交表单数据导致添加一个每个双引号前都有反斜杠。此问题是由称为“魔术引号”的服务器配置功能引起的。启用魔术引号后,PHP 在向数据库或表单提交发送或从数据库或表单提交中接收某些字符时,会自动转义某些字符,包括双引号。虽然这可以通过转义恶意引号...
    编程 发布于2024-11-08
  • ## 如何在 C++ 中将多维数组转换为库函数的指针?
    ## 如何在 C++ 中将多维数组转换为库函数的指针?
    在 C 中将多维数组转换为指针 在 C 中,多维数组与指针不直接兼容。当尝试使用采用 double** 的库函数时,使用简单的强制转换转换 double4 数组可能会导致错误。要解决此问题,必须使数组适应函数的接口。不要将整个数组转换为 double**,而是创建指向每行开头的临时“索引”数组:do...
    编程 发布于2024-11-08
  • 如何在 PHP 中异步执行 cURL 请求?
    如何在 PHP 中异步执行 cURL 请求?
    PHP中的异步Curl请求在PHP中异步执行curl post请求可以提高性能并防止潜在的延迟。以下是如何使用不同的方法实现此目的:使用异步 cURL 函数使用curl_multi_*时,您可以同时执行多个 cURL 请求。下面是一个示例代码:$curl = curl_init($request);...
    编程 发布于2024-11-08
  • 如何将 Boehm 垃圾收集器与 C++ 标准库类(如“std::vector”和“std::string”)集成?
    如何将 Boehm 垃圾收集器与 C++ 标准库类(如“std::vector”和“std::string”)集成?
    将 Boehm 垃圾收集器与 C 标准库结合使用开发多线程 C 应用程序时,Boehm 保守的垃圾收集器对于简化内存非常有用管理。这就提出了如何将 Boehm GC 与 C 标准库的类(如 std::map 和 std::vector)集成的问题。一种方法涉及重新定义全局运算符 ::new 以使用 ...
    编程 发布于2024-11-08
  • 如何在 PHP 中通过 SSH 安全连接到远程 MySQL 服务器?
    如何在 PHP 中通过 SSH 安全连接到远程 MySQL 服务器?
    在 PHP 中通过 SSH 安全连接到远程 MySQL 服务器要为 PHP 数据库连接建立安全隧道,以下 SSH 隧道解决方案提供了一种强大的方法。SSH 隧道设置创建一个通往 MySQL 数据库服务器的 SSH 隧道。为此,请使用如下命令:ssh -fNg -L 3307:10.3.1.55:33...
    编程 发布于2024-11-08
  • 混淆技术真的可以保护可执行文件免受逆向工程的影响吗?
    混淆技术真的可以保护可执行文件免受逆向工程的影响吗?
    保护可执行文件免遭逆向工程:解决方案有限的挑战保护代码免遭未经授权的逆向工程是开发人员持续关注的问题,尤其是当它包含敏感信息。虽然已经提出了各种方法,但重要的是要承认完全防止逆向工程实际上是不可能的。常见混淆技术用户建议的策略,例如代码注入、混淆和自定义启动例程的目的是使反汇编变得不那么简单。然而,...
    编程 发布于2024-11-08
  • 掌握 Laravel 中的 Eloquent where 条件
    掌握 Laravel 中的 Eloquent where 条件
    Laravel 的 Eloquent ORM(对象关系映射)是其突出的功能之一,提供了一种与数据库交互的强大而富有表现力的方式。 Eloquent 提供的一项基本功能是方法,它允许开发人员高效、直观地过滤查询。在本文中,我们将深入研究 where 条件,探索其各种形式和实际用例。 ...
    编程 发布于2024-11-08
  • 在 Gmail 的 Chrome 12+ 更新中如何从剪贴板粘贴图像?
    在 Gmail 的 Chrome 12+ 更新中如何从剪贴板粘贴图像?
    将剪贴板中的图像粘贴到 Gmail:Chrome 12 中的操作方法 Google 宣布能够将剪贴板中的图像直接粘贴到 Gmail使用 Chrome 12 的 Gmail 引发了人们对其底层机制的好奇。尽管使用了最新的 Chrome 版本,一些用户仍然无法找到有关如何在 Webkit 中实现此增强功...
    编程 发布于2024-11-08
  • JavaScript 演示场景竞赛 - JS 版
    JavaScript 演示场景竞赛 - JS 版
    JS1024 于 2024 年回归! 准备好迎接激动人心的挑战! JS1024 回归,通过在 JavaScript、HTML 或 GLSL 中创建令人惊叹的演示(全部在 1024 字节限制内),将开发人员推向极限。无论您是经验丰富的编码员还是新手,这都是您展示创造力和技术技能的机会...
    编程 发布于2024-11-08
  • 第九届 TCmeeting 的更新
    第九届 TCmeeting 的更新
    议程上有几个项目,本文重点介绍第 104 次 TC39 会议 [2024 年 10 月 8 日至 10 日] 的功能提案及其进展。 第一阶段: 表示度量:建议在 JavaScript 中使用适当的单位格式化和表示度量。 Immutable ArrayBuffers:添加 ArrayB...
    编程 发布于2024-11-08
  • 如何使用 CSS 在图像地图上实现鼠标悬停效果?
    如何使用 CSS 在图像地图上实现鼠标悬停效果?
    使用 CSS 设置图像地图鼠标悬停样式创建交互式网页时,通常需要包含具有可单击区域的图像。通常,这是使用图像映射来实现的。然而,事实证明,在鼠标悬停时设置这些区域的样式以提供额外的交互性是难以实现的。过去,尝试使用 CSS 设置这些区域的样式所取得的成功有限,如提供的示例所示:<img src...
    编程 发布于2024-11-08
  • 升级您的前端游戏:无头和静态未来的学习框架
    升级您的前端游戏:无头和静态未来的学习框架
    前端领域正在以惊人的速度发展。忘掉笨重、单一的网站吧——未来属于无头 CMS 和静态网站生成器 (SSG)。这些时尚的强大功能提供了无与伦比的速度、灵活性和安全性,但征服它们需要使用正确的工具。 为了利用他们的力量,开发人员正在转向 Next.js 和 Gatsby,这两个尖端的前端框架塑造了我们...
    编程 发布于2024-11-08
  • 如何修复 PyGame 动画闪烁:故障排除和解决方案
    如何修复 PyGame 动画闪烁:故障排除和解决方案
    PyGame 动画闪烁:故障排除和解决方案运行 PyGame 程序时,您可能会遇到动画闪烁的问题。这可能会令人沮丧,特别是如果您不熟悉使用该框架。PyGame 中动画闪烁的根本原因通常是多次调用 pygame.display.update()。不应在应用程序循环中的多个点更新显示,而应仅在循环结束时...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3