🚀 专注于提升应用首屏加载速度,提供最佳用户体验,灵感来自NextJS的预加载.
正常加载.gif
route-resource-preload 预加载.gif
尽最大努力地去缩短动态导入组件的加载时间
(可以看作是 suspense loading 组件持续时间)以提供最佳交互体验.typescript
支持.正常懒加载
普通组件 及 Module-Federationroute-resource-preload 预加载
普通组件 及 Module-Federation资源 | 正常懒加载(ms) | 预加载 (ms) |
---|---|---|
普通组件 (单个资源文件) | 184 | 1 |
Module-Federation 组件 (6个资源文件) | 405 | 8 |
从表中可以看出,route-resource-preload 预加载显着提升了组件的加载速度,尤其是对于复杂的组件,加载速度的提升更为明显。 这说明在复杂的业务场景下,
预加载可以显着提升组件加载速度和用户体验
.
以上是常规组件预加载时的对比效果
正常懒加载
模态弹窗route-resource-preload 预加载
模态弹窗此处有两个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) |
---|---|---|
模态弹窗 (单个资源文件) | 271 | 45 |
基于route-resource-preload
,可以让模态弹窗组件 visible 为 true 时,才进行资源预加载
,为 false 时,不预加载以减少应用首屏 http 请求数,基于预加载机制,在保证页面性能的同时,不影响用户的交互体验。
route-resource-preload 的目标是Any code can be split
,在不影响用户交互体验的同时,尽可能的提升应用性能`。🚀 🚀 🚀
希望 route-resource-preload 能对你的项目有所帮助,后续还将持续探索 vite 中的使用以及对 vue 的支持,如果你有好的想法,欢迎共建。