代码分割配合动态导入 import() 可按需加载模块,减少首屏体积;支持路由拆分、预加载、SSR 适配及公共依赖提取,提升首屏性能与用户体验。

JavaScript 代码分割(Code Splitting)配合动态导入(import()),能有效减少首屏加载体积,让页面更快可交互。核心思路是:不把所有代码打包进一个大文件,而是按需加载真正需要的模块。
动态导入 import() 是实现按需加载的关键
import() 返回一个 Promise,支持在运行时决定加载哪个模块,适合路由切换、条件加载、交互触发等场景。它和静态 import 不同,不会被 Webpack/Vite 等工具在构建时提前解析并合并进主包。
- 语法简单:
const module = await import('./utils.js');或import('./modal.js').then(mod => mod.show()); - 支持表达式和变量路径(但不能是完全动态拼接,如
import(`./${name}.js`)中name需为编译期可分析的值,否则会打包所有匹配文件) - 现代浏览器原生支持,无需额外 polyfill(IE 不支持,需降级处理)
结合路由做代码分割,显著降低首屏 JS 体积
单页应用(SPA)中,用户首次访问通常只看首页,却下载了所有路由对应的逻辑。用动态导入拆分路由组件,就能避免这种浪费。
- React 示例(配合
React.lazy+Suspense):const About = React.lazy(() => import('./pages/About'));<br><Suspense fallback="<p>Loading...</p>"><br> <About /><br></Suspense>登录后复制
- Vue Router 示例:
const routes = [{<br> path: '/admin',<br> component: () => import('./views/Admin.vue')<br>}];登录后复制
- 注意搭配骨架屏或 loading 状态,提升用户感知体验
提取公共依赖 + 预加载策略,进一步优化体验
仅靠代码分割还不够。模块间可能重复引用同一库(如 lodash),需用 SplitChunksPlugin(Webpack)或 build.rollupOptions.output.manualChunks(Vite)提取公共 chunk。
标签: vue react javascript java js node.js node vite 浏览器 工具 ai 路由
还木有评论哦,快来抢沙发吧~