route-resource-preload 拆包,尽最大努力减少首屏幕加载资源,并提供优质的用户体验
创始人
2025-06-01 02:33:08
0

route-resource-preload

🚀 专注于提升应用首屏加载速度,提供最佳用户体验,灵感来自NextJS的预加载.

gif 效果图

正常加载.gif

nornal-load.gif

route-resource-preload 预加载.gif

preoload.gif

为什么你需要 route-resource-preload ?

  • 拆分模块按需加载,提升应用首屏加载体验.
  • 尽最大努力地去缩短动态导入组件的加载时间(可以看作是 suspense loading 组件持续时间)以提供最佳交互体验.
  • 支持自动预加载资源(JS / Component / Module-Federation / UMD / Svg / Png 等).
  • 支持手动调用预加载.
  • 完备的 typescript 支持.

route-resource-preload 与 webpack-prefetch/preload 或 loadable-component 有什么不同?

  • 可以更细节(鼠标 hover 时加载、出现在视图内时加载、visible 时加载、页面初始化时加载)处控制何时何处进行资源预加载
  • 支持预加载Module-Federation
  • 支持预加载更多静态资源类型

常规组件使用效果对比

正常懒加载普通组件 及 Module-Federation

image.png

route-resource-preload 预加载普通组件 及 Module-Federation

image.png

资源正常懒加载(ms)预加载 (ms)
普通组件 (单个资源文件)1841
Module-Federation 组件 (6个资源文件)4058

从表中可以看出,route-resource-preload 预加载显着提升了组件的加载速度,尤其是对于复杂的组件,加载速度的提升更为明显。 这说明在复杂的业务场景下,预加载可以显着提升组件加载速度和用户体验.

以上是常规组件预加载时的对比效果

模态弹窗组件使用效果对比

正常懒加载模态弹窗

image.png

route-resource-preload 预加载模态弹窗

image.png

此处有两个http请求,是因为预加载配置了两个组件。

const Modal = useMemo(()=> dynamic({visible, // false 时,不进行资源预加载loader: () => import('antd/es/modal'),loading: () => <>loading...,
}),[visible])<>visible} />()=>{setVisible(true)}}>       PreLoad Modal

new RouteResourcePreloadPlugin({modulePreloadMap: {"/A": ["../components/A",'antd/es/modal']}
})
资源正常懒加载(ms)预加载 (ms)
模态弹窗 (单个资源文件)27145

基于route-resource-preload ,可以让模态弹窗组件 visible 为 true 时,才进行资源预加载,为 false 时,不预加载以减少应用首屏 http 请求数,基于预加载机制,在保证页面性能的同时,不影响用户的交互体验。

总结

route-resource-preload 的目标是Any code can be split,在不影响用户交互体验的同时,尽可能的提升应用性能`。🚀 🚀 🚀

希望 route-resource-preload 能对你的项目有所帮助,后续还将持续探索 vite 中的使用以及对 vue 的支持,如果你有好的想法,欢迎共建。

在线体验

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...