路由懒加载能显著减少首屏资源体积,核心是按需加载;Vue用defineAsyncComponent或()=>import(),React用lazy+Suspense;需配合骨架屏、网络检测、HTTP/2推送、长期缓存及PWA兜底策略,并通过Performance API监控弱网效果。

路由懒加载能显著减少首屏资源体积,尤其在移动端弱网下,可缩短白屏时间、降低内存占用。核心是按需加载,避免一次性下载全部 JS 和组件。
路由懒加载的正确写法
Vue 和 React 都支持动态 import,但需注意语法和打包配置:
- Vue Router 中使用 defineAsyncComponent 或直接函数式写法:
component: () => import('./views/Home.vue'),避免写成component: import('./views/Home.vue')(会立即执行) - React Router v6 推荐用 React.lazy + Suspense,配合错误边界处理加载失败;注意 Suspense 必须包裹在 Router 外层或 Layout 中,否则无法生效
- Webpack 默认会对每个
import()创建独立 chunk,可通过 webpackChunkName 手动分组,比如import(/* webpackChunkName: "user" */ './UserPage.vue'),便于缓存复用
弱网下的加载体验优化
光做懒加载不够,用户感知更重要。重点在于“有反馈、不卡死、可降级”:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 添加骨架屏或轻量 loading 状态,避免白屏焦虑;骨架宽度/高度尽量贴近真实内容,减少重排
- 对非关键路由(如“关于我们”、“帮助中心”)启用 preload: false(Vue Router)或延迟加载逻辑(如点击后才调用
loadComponent),进一步压缩初始包 - 利用 Network Information API 检测 2G/3G 网络,自动关闭图片懒加载的 fade 效果、禁用高分辨率图、跳过 WebP 格式协商,直出 JPEG
配合服务端与缓存策略提效
前端懒加载需和服务端协同,才能真正稳住弱网体验:
- 开启 HTTP/2 Server Push(若服务端支持),对首屏必用的懒加载 chunk 提前推送,减少 RTT 延迟
- 为每个异步 chunk 设置长期缓存(
contenthash),并配置强缓存头(Cache-Control: public, max-age=31536000),避免重复下载 - 在 PWA 场景下,用 Workbox 的 Navigation Route + NetworkFirst 策略兜底:路由请求优先走网络,失败时返回缓存的 Shell 页面,保持基础可交互性
监控与渐进增强建议
上线后必须验证效果,不能只看构建产物大小:
- 通过 Performance API(如
navigation.timing或paint条目)记录各路由的 load 时间、FCP、TTI,在弱网模拟下对比优化前后数据 - 对低端 Android 机型(如 2GB 内存、Mali GPU),限制同时加载的异步模块数(例如最多并发 2 个
import()),防止内存溢出导致白屏或闪退 - 保留一个最小化 fallback 路由(如纯 HTML 静态页),当 JS 加载超时或解析失败时,用
document.write或 meta refresh 引导至该页,保障最低可用性


















