前端/移动开发面试题更新 2026-08-05

请解释在 React 应用中,利用 React Router 实现路由级别代码分割与按需加载模块的具体做法,并说明其背后的原理。

前端/移动开发性能优化技术原理ReactReact Router

考察说明

考查对 React 路由懒加载实现机制(React.lazy + Suspense)以及适用场景的理解。

回答思路

  1. 【回答框架 1】React 16.6 起提供了 React.lazy 和 Suspense,React.lazy 接收一个动态 import() 函数,返回一个可渲染的组件,在组件首次渲染时才加载对应模块。
  2. 【回答框架 2】结合 React Router,可将路由配置中的 component 属性替换为 React.lazy 包装的组件,并在外层包裹 Suspense,fallback 属性可以指定加载中的占位 UI。
  3. 【回答框架 3】动态 import() 是 Webpack 等构建工具支持的代码分割点,构建时会生成独立的 chunk 文件,浏览器在需要时按需请求,从而减小初始包体积。
  4. 【回答框架 4】还可以考虑使用 Loadable Components 这类更成熟的库,它支持服务端渲染和更细粒度的加载状态控制,但 React.lazy 是目前官方推荐的基础方案。
  5. 【关键点 1】React.lazy 必须配合 Suspense 使用,否则会抛出异常。
  6. 【关键点 2】动态 import() 返回 Promise,Webpack 会基于此生成代码分割点。
  7. 【关键点 3】懒加载模块仅在路由首次匹配时触发加载,之后会缓存。
  8. 【关键点 4】fallback 通常使用 loading 组件,避免白屏时间过长。
  9. 【易错点 1】React.lazy 目前不支持命名导出,只能默认导出组件。
  10. 【易错点 2】如果多个路由懒加载同一模块,可能重复请求,需配置合理的 splitChunks。
  11. 【易错点 3】过度拆分会导致大量小请求,应权衡 bundle 大小与请求数量。