Next.js 在 React 生态系统中已经成为了一个备受欢迎的框架,它结合了服务器渲染和客户端渲染,为复杂的现代 Web 应用提供了一种简单的解决方案。然而,为了提供更好的用户体验,代码分割和资源优化是必不可少的。
什么是代码分割
代码分割是指将代码分成多个文件,以便能够在需要时按需加载。这可以减轻应用程序的初始加载时间和下载大小,并且可以减少对用户设备和网络速度的依赖。
Next.js 中的代码分割
Next.js 通过使用基于 Webpack 的动态导入实现代码分割。在你的页面组件中使用 import()
函数即可实现代码分割。
-- -------------------- ---- ------- ------ ------- ---- -------------- ----- ---------------- - ---------- -- ----------------------------------------- ------ ------- -------- ------ - ------ - ----- ------- -------- ----------------- -- ------ - -
在上面的示例中,DynamicComponent
是一个需要异步加载的组件。我们将其包装在 dynamic
函数中,import()
函数则是动态导入此组件。当页面加载时,只会加载 Home
组件,而 DynamicComponent
组件将在需要时进行加载。
你也可以将静态文件(如图片、CSS 和 JavaScript 文件)和数据分离出来并按需加载。Next.js 提供了以下两个函数,它们都返回路由站点的根目录的 URL。
publicRuntimeConfig
: 在服务端和客户端皆可使用,环境变量可以被更改,实时生效。serverRuntimeConfig
: 仅能在服务端使用,环境变量可以被更改,实时生效。
-- -------------------- ---- ------- ------ --------- ---- ------------- ----- - -------------------- - ------- -- -------------------- - ---------- -- - - ----------- -------------------- -- ------- --- ----- ---- --- ----------- -------- ----------------------- -- ------- --- ----- ---- --- ----------- --------
什么是资源优化
资源优化是将 Web 应用程序最小化,并提高其效率和可维护性的过程。这包括优化图像、视频、JavaScript 和 CSS 文件的大小和加载时间。
Next.js 中的资源优化
Next.js 提供了以下三种方式来优化资源:
压缩和缓存
Next.js 自动缓存生成的 HTML、CSS 和 JavaScript 文件。你可以在 next.config.js
文件中设置 compress
参数来启用 Gzip 压缩。
module.exports = { compress: true, }
图像优化
Next.js 内置的 next/image
组件支持图像优化的本地化和响应式。这可以减小图像的大小并提高应用程序速度。当使用该组件时,<img>
元素将自动使用 WebP、自适应图像大小、按需加载和设备像素比。
-- -------------------- ---- ------- ------ ----- ---- ------------ ------ ------- -------- ------ - ------ - ----- ------ ---------------- ----------- ------------ ------------- -- ------ - -
提取 CSS
Next.js 使用基于 PostCSS 的 CSS-in-JS 库来生成 CSS。你可以使用以下方式来提取 CSS:
- 使用插件 extract-css-chunks-webpack-plugin。这将提取并缓存在客户端和服务端渲染上使用的 CSS 文件。
- 在
next.config.js
文件中设置optimizeCss: true
。这会将 CSS 提取到单独的文件中,并使用最小化 CSS以减小文件大小。
const withCSS = require('@zeit/next-css') module.exports = withCSS({ optimizeCss: true, })
总结
在使用 Next.js 时,代码分割和资源优化是必不可少的。通过使用动态导入、公共和服务端运行时配置、缓存、图像优化和 CSS 提取,可以减小应用程序的大小并提高其性能。为此,你可以按需加载组件,优化静态文件和数据,压缩文件大小并提取 CSS。这些优化将增强用户体验并提高 Web 应用的可维护性和可扩展性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a9327848841e989457a395