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左右

相关推荐
我的xiaodoujiao19 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 25--数据驱动--参数化处理 Excel 文件 2
前端·python·学习·测试工具·ui·pytest
San30.21 分钟前
从代码规范到 AI Agent:现代前端开发的智能化演进
javascript·人工智能·代码规范
岁月宁静1 小时前
从0到1:智能汇 AI 全栈实战,拆解多模态 AI 应用开发全流程
前端·vue.js·node.js
廾匸6401 小时前
语义化标签
前端·javascript·html
汪汪队立大功1231 小时前
selenium中执行javascript,是否等价于在浏览器console位置执行
javascript·selenium·测试工具
烛阴1 小时前
隐式vs显式:解密C#类型转换的底层逻辑
前端·c#
Fantasydg1 小时前
AJAX JSON学习
前端·学习·ajax
瓢儿菜20182 小时前
Web开发:什么是 HTTP 状态码?
前端·网络协议·http
1024小神2 小时前
swiftui使用WKWebView加载自签的https服务,允许不安全访问
前端
anyup2 小时前
支持鸿蒙!开源三个月,uView Pro 开源库近期更新全面大盘点,及未来计划
前端·vue.js·uni-app