转载请注明 来源:http://www.eword.name/
Author:eword
Email:eword@eword.name
webpack生产环境优化:懒加载和预加载
一、直接加载
浏览器一打开,直接加载了test.js
这里使用了直接导入方式。
直接导入:import { mul } from './test';
| |
| |
| |
| console.log('index.js被加载了~'); |
| |
| |
| import { mul } from './test'; |
| |
| console.log(mul); |
| |
| document.getElementById('btn').onclick = function () { |
| console.log(mul(4, 5)); |
| } |
| |
核心配置
| |
| console.log('index.js被加载了~'); |
二、懒加载
懒加载,当文件需要使用时才加载。
需要使用import动态导入方式。
| |
| console.log('index.js被加载了~'); |
| |
| |
| |
| |
| document.getElementById('btn').onclick = function () { |
| |
| import('./test') |
| .then(({ mul }) => { |
| console.log(mul(4, 5)); |
| }) |
| } |
| |
| |
核心配置
| |
| import('./test') |
| .then(({ mul }) => { |
| |
| …… |
| }) |
webpackChunkName:'test'
:配置打包时的chunk名称,既文件名。
三、预加载
预加载prefetch:会在使用之前,提前加载js文件。
同样需要使用import动态导入方式。
正常加载可以认为是并行加载(同一时间加载多个文件) 预加载 prefetch:等其他资源加载完毕,浏览器空闲了,再加载资源。
| |
| console.log('index.js被加载了~'); |
| |
| |
| |
| |
| document.getElementById('btn').onclick = function () { |
| |
| |
| |
| import('./test') |
| .then(({ mul }) => { |
| console.log(mul(4, 5)); |
| }) |
| } |
核心配置
| |
| import('./test') |
| .then(({ mul }) => { |
| |
| …… |
| }) |
webpackChunkName:'test'
:配置打包时的chunk名称,既文件名。
webpackPrefetch:true
:配置预加载模式。
- 打包时会有
prefetch
提示。

四、工程文件目录
| # 目录结构 |
| . |
| ├── src |
| │ ├── index.html |
| │ └── js |
| │ ├── index.js //入口文件 |
| │ └── test.js //被加载的文件 |
| └── webpack.config.js |
| |
| |
| console.log('test.js被加载了~'); |
| |
| export function mul(x, y) { |
| return x * y; |
| } |
| |
| export function count(x, y) { |
| return x - y; |
| } |
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>webpack</title> |
| </head> |
| |
| <body> |
| <H1>hello lazy loading</H1> |
| <button id="btn">加载</button> |
| </body> |
| |
| </html> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异