React实战-实现性能优化

✊不积跬步,无以至千里;不积小流,无以成江海

前情提要

将页面部署到 Netlify上(gitHubpage好像有点太慢所以没有选,因为没花钱买域名所以只能暂时用netlify做一下测试)

deploy后发现页面的下载速度如图:

基本维持在4s左右这个样子,接下来就想怎么能够优化这个时间。

动态import

优化的第一步是想要尝试动态import。思路是将首页变成两部分:当前要看的部分 & 以后要看的部分。

来到router.tsx,发现home文件是先打包好,然后再放到下面去用,那么实现方法可以为:

javascript 复制代码
// 1,用import()将路径变为动态
import('../pages/StatisticsPage')

// 2. 将前面加上箭头函数
() => import('../pages/StatisticsPage')

// 3. 用懒加载将函数包裹起来,并赋值
const StatisticsPage = lazy(() => import('../pages/StatisticsPage'))

// 4. 把page用suspense包起来
<Suspense> <StatisticsPage /> </Suspense>

// 5. 提供正在加载中需要显示的内容
<Suspense fallback={<Loading />}><StatisticsPage /></Suspense> }

需要注意的几个点:

  1. 动态引入需要默认的导出,但我们的文件都没有默认导出,所以要在最后加上默认导出 export default home
  2. 上面的操作能够保证对应页面只有访问到才能被加载。否则则不加载
  3. 由于我们首页的体积本来就很小,所以对home页面进行动态加载收益不大,对于那些页面上有很多图片的应该有很大帮助
  4. 动态加载就是懒加载
  5. 因为StatisticsPage页面比较大 所以对它下手了

打包后statastic页面大小为342KB

打包后index页面大小为139KB,压缩效率为64%

deploy后发现页面的下载速度如图:

实现页面速度从4s到0.9s的提升

Vite Code Splitting

第二步可以用手动分块的方法来实现对页面速度的优化,思路为:某个比较大的库单独打包,不要打包到index文件里面。vite.config.ts中添加代码如下:

python 复制代码
build: {
      rollupOptions: {
        output: {
          manualChunks(id: any) {
          //如果路径中包含echars 我就单独返回echarts的包
            if (id.includes('echarts')) {
              return 'echarts'
            }
            if (id.includes('node_modules')) {
              return 'vendor'
            }
          }
        }
      }
    },

打包结果如下:

index又变小了,从400多KB到了100多KB。

deploy后发现页面的下载速度如图:

平均时间缩短为0.8s左右:

极限最低时间可以到达0.6s左右

相关推荐
m0_502724955 分钟前
golang 、java、c++、javascript 语言switch case异同
java·javascript·c++·golang
JiaWen技术圈28 分钟前
主流非 JWT 式 Access Token 方案
前端·安全
ZC跨境爬虫1 小时前
跟着 MDN 学 HTML day_57:(HTML 表格进阶特性与无障碍实践)
java·前端·javascript·ui·html·音视频
Moment1 小时前
刷 Reddit 1 小时没结果?我用这个方法 10 秒挖出真实需求
前端·javascript·后端
折翅嘀皇虫1 小时前
【无标题】steal_work_thread_pool
服务器·前端·算法
w_t_y_y1 小时前
VUE组件配置项(零)概述
前端·javascript·vue.js
水云桐程序员1 小时前
Web应用的分类
前端·javascript·vue.js·react.js·webkit
Jack N1 小时前
2026 Web 网站性能优化指南
前端·性能优化
yqcoder1 小时前
TypeScript 进阶:如何精准获取对象的所有 Key?
javascript·ubuntu·typescript
UXbot1 小时前
支持移动端原型绘制的 AI 工具核心功能对比(2026):5 款主流平台能力横向评测
前端·低代码·ui·交互·原型模式·web app