JavaScript代码分割的核心目标是按需加载模块以减小初始包体积、提升首屏速度;动态导入(import())是标准实现方式,返回Promise,支持运行时路径决定、模板字符串拼接、浏览器原生支持及构建工具自动分包。

JavaScript 代码分割(Code Splitting)的核心目标是按需加载模块,减少初始包体积,提升首屏加载速度。动态导入(import())是实现它的最常用、最标准的方式——它返回一个 Promise,支持在运行时决定加载哪个模块。
动态导入的基本用法
和静态 import 不同,import() 是一个函数调用,参数是模块路径(支持字符串模板),可在条件语句、事件回调、路由切换等任意位置使用:
- 写法示例:
const module = await import('./utils.js');或import('./modal.js').then(mod => mod.show()); - 路径必须是相对或绝对 URL,不能是纯变量(如
import(path)会报错),但可使用模板字符串拼接静态部分,比如import(`./locales/${lang}.js`)是合法的(Webpack/Vite 支持) - 浏览器原生支持(Chrome 63+、Firefox 67+、Safari 11.1+),无需额外 polyfill
配合 Webpack/Vite 实现自动分包
构建工具会识别 import() 调用,并把对应模块单独打包成 chunk 文件(如 234.a1b2c3.js),并在需要时异步加载:
- Webpack 中默认启用,无需配置;Vite 在开发和生产环境均自动处理
- 可添加 webpackChunkName 注释来命名 chunk:
import(/* webpackChunkName: "chart" */ './charts.js'),便于调试和缓存管理 - 多个
import()加载同一模块,只会请求一次(Promise 缓存机制保证)
常见实用场景
动态导入不是为了炫技,而是解决真实性能问题:
标签: vue react javascript java js json vite 浏览器 工具 懒加载 safari ai
还木有评论哦,快来抢沙发吧~