webpack懒加载和异步加载的区别

文章类型:webpack

发布者:hp

发布时间:2025-05-05

一:引言

懒加载是按需加载资源,而异步加载是通过动态导入触发代码分割

二:原理

(1)懒加载

   本质:异步加载的‌应用层策略‌,通过条件判断(如路由切换、用户点击)触发模块加载

   方式:

    // Vue 路由懒加载  
const Home = () => import(/* webpackChunkName: "Home" */ './Home.vue');  

(2)异步加载

   本质:Webpack 的‌底层机制‌,通过动态导入语法(import())触发代码分割,生成独立 chunk

   方式:

// 动态导入触发异步加载  
button.onclick = () => {  
  import('./utils').then(module => module.doSomething());  
};  

三:代码

// 路由懒加载(依赖异步加载机制)  
const AdminPanel = () => import(/* webpackPrefetch: true */ './AdminPanel.vue');  

// 动态异步加载工具库  
const loadAnalytics = () => import('./analytics');  

// 用户触发时执行懒加载  
document.getElementById('admin-btn').addEventListener('click', () => {  
  loadAnalytics().then(module => module.init());  
  AdminPanel().then(component => render(component));  
});  

四:侧重点

1:懒加载侧重于降低首屏资源体积。提升首屏渲染速度

2:异步加载侧重于避免阻塞主线程,利用浏览器空闲时间加载资源,提升交互响应速度

五:加载行为

(1):资源加载时机上

懒加载=>用户行为触发后

异步加载=>执行到 import() 时立即加载

(2):执行逻辑上

懒加载=>加载完成后自动渲染组件或执行逻辑

异步加载=>加载完成后需手动调用

(3):网络请求上

懒加载=>按需加载,减少首屏请求量

异步加载=>提前加载非关键代码,可能增加并行请求数

六:总结

1:懒加载是策略=>基于业务需求(如路由、交互)延迟加载资源,优化首屏体验‌

2:异步加载是机制=>Webpack 通过代码分割生成独立 chunk,支撑懒加载的实现‌