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

相关推荐
就叫_这个吧11 分钟前
JavaScript中常用事件示例展示附源码
开发语言·javascript·html
边界条件╝29 分钟前
微前端进阶(二)
前端
代码N年归来仍是新手村成员35 分钟前
【AWS】Lambda 初识与服务部署
javascript·react.js·ai·node.js·云计算·ai编程·aws
罗超驿40 分钟前
9.零基础学CSS:元素属性设置(字体、颜色、对齐等)全解析
前端·css
云水一下1 小时前
JavaScript 从零基础到精通系列:流程控制、函数与作用域
前端·javascript
丷丩1 小时前
MapLibre GL JS第28课:PMTiles源和协议
javascript·gis·map·mapbox·maplibre gl js
之歆1 小时前
Day24_JavaScript正则表达式与性能优化实战:从入门到精通
javascript·性能优化·正则表达式
大雷神1 小时前
HarmonyOS APP<玩转React>开源教程三十一:示例项目下载功能
react.js·开源·harmonyos
柚子科技1 小时前
Vue3 响应式原理:我被 ref 和 reactive 坑了3次后终于搞懂了
前端·javascript·vue.js
大鱼前端1 小时前
Veaury:让Vue和React组件在同一应用中共存的神器
前端·vue.js·react.js