webpack的chunkFilename详细说明

简介: webpack的chunkFilename详细说明

你知道chunkFilename的作用吗?了解之前,先了解懒加载,动态导入的功能。

通常,一个网页会有自身的侧重点:

1、假如你在 YouTube 上加载一个视频页面,你更关心的肯定是视频而不是评论。所以,这里视频就比评论重要。

2、又比如你在一个新闻网站看一篇文章,你更关心的肯定是文章的文字而不是广告。所以,这里文字就比广告重要。

上面的这些情况,都可以通过优先下载最重要的部分,稍后懒加载剩余部分,从而来提升页面首次加载的性能。在 webpack 中,使用 import() 函数即可实现。

let btn = document.createElement('button')
btn.innerHTML = '按钮1'

btn.addEventListener('click', () => {
  import('./a').then(() => {
    console.log('加载完成')
  })
})

document.body.appendChild(btn)

import() 函数可以帮助你实现按需加载。Webpack 在打包时遇到 import,就会把这个模块放到单独的 chunk 中:

> npx webpack

asset bundle.js 13.3 KiB [emitted] (name: main)
asset src_a_js.bundle.js 860 bytes [emitted]
runtime modules 7.81 KiB 10 modules
cacheable modules 236 bytes
  ./src/index.js 209 bytes [built] [code generated]
  ./src/a.js 27 bytes [built] [code generated]
webpack 5.15.0 compiled successfully in 92 ms

只有当代码执行到 import() 函数时才会去下载。

这样可以让 入口 bundle 变得更小,从而减少首次加载时间。不仅如此,它还可以优化缓存,如果你修改了入口 chunk 的代码,注释 chunk 不会受到影响。

在开发模式下,webpack5 代码块 ID 默认启用了的新命名方式,算法为模块提供了人类可读的名称。 在生产模式下默认是数字的的形式。

比如在开发模式下文件是叫做 src_a_js.bundle.js 文件。在生产模式下是以 0.bundle.js 这样的形式。而 webpack4 在生产和开发都是数字形式的。

所以你不再需要使用 import(/* webpackChunkName: "name" */ "module") 来调试。 但如果你想控制生产环境的文件名,还是有意义的。

output: {
  filename: 'bundle.js',
  path: path.resolve(__dirname, 'dist'),
  chunkFilename: '[name].bundle.js'
},

通过注释改名字

import(/* webpackChunkName: "video" */ './a').then(() => {
  console.log('加载完成')
})
video.bundle.js

总结:webpack5 在开发环境下会自动命名代码块 ID 。

相关文章
|
JavaScript
vue3中使用全局自定义指令和组件自定义指令
全局自定义指令和组件自定义指令的区别,除了写法不同和作用不同,其他的包括生命周期的使用方法都是一致的,全局自定义指令在main.ts中注册后整个项目都可以使用,而组件自定义指令只能在组件中注册,并且在组件中使用。
481 1
|
8月前
|
JavaScript 前端开发 API
纯js轻量级页面顶部Loading进度条插件
纯js轻量级页面顶部Loading进度条插件
|
Windows
Windows系统下快速删除node_modules
Windows系统下快速删除node_modules
974 0
|
资源调度
umi中AssertionError [ERR_ASSERTION]: filePath not found of
umi中AssertionError [ERR_ASSERTION]: filePath not found of
|
11月前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
6月前
|
存储 缓存 数据可视化
HarmonyOS5云服务技术分享--云存储指南
本文详解HarmonyOS云存储实战技巧,涵盖文件上传、下载、元数据操作及删除等核心功能。通过简单易懂的示例代码,助你快速上手。云存储支持自动同步、精细权限管理与海量存储,适合处理用户头像、游戏存档等场景。文中还提供避坑指南、进阶技巧和最佳实践,帮助开发者高效利用云存储功能,减少开发障碍。附完整代码示例,欢迎交流!
WK
|
计算机视觉
QLabel
QLabel是Qt框架中的控件类,主要用于显示文本或图像。它可以显示静态文本、支持富文本和多种图像格式,提供丰富的成员函数如setText、setPixmap等,支持对齐方式和样式表设置,具备一定的交互性,广泛应用于图像标注、处理和交互等场景。
WK
630 0
Nuxt3 实战 (八):优雅的实现暗黑主题模式
这篇文章介绍了在Nuxt3中实现暗黑模式的过程。首先推荐使用color-mode库来轻易实现暗黑模式切换,并通过pnpm命令安装@nuxtjs/color-mode依赖。然后在nuxt.config.ts配置文件中注入依赖,并根据项目实际情况自定义配置。接着通过toggleDark函数实现切换动画,并在需要的地方加载组件<ColorMode/>,从而达到最终效果。
413 0
Nuxt3 实战 (八):优雅的实现暗黑主题模式
|
存储 算法 数据可视化
云上大数据分析平台:解锁数据价值,驱动智能决策新篇章
实时性与流式处理:随着实时数据分析需求的增加,云上大数据分析平台将更加注重实时性和流式处理能力的建设。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。
1428 8