introduction
id: introduction title: 简介 tags:
- 简介
Webpack 是一个前端资源加载/打包工具。根据模块的依赖关系进行分析,然后将这些模块按照指定的规则生成对应的静态资源。
webpack4 和 webpack5 的主要区别
Webpack5是Webpack4的升级版,它们之间的主要区别包括以下几个方面:
- 性能优化:Webpack5在性能方面做了一些优化,例如通过持久化缓存来加快二次构建的速度,通过改进Tree Shaking算法来减小打包后的文件大小等。
- Tree Shaking:Webpack5在Tree Shaking方面进行了一些优化,它通过引入“sideEffects”属性来让开发者标识哪些文件没有副作用,以便在Tree Shaking时可以更加精确地删除无用的代码。
- 模块联邦:Webpack5引入了模块联邦(Module Federation)的功能,使得不同的Webpack构建之间可以共享模块,从而提高了应用程序的可扩展性和灵活性。
- Chunk 分离:Webpack5通过引入新的“chunk format”来实现对Chunk的更加灵活的分离,从而提高了构建的速度和效率。
- 配置变更:Webpack5在配置方面也做了一些调整,例如废弃了“mode”配置项中的“none”选项,引入了“cache”配置项来配置持久化缓存等。
- 总的来说,Webpack5相对于Webpack4来说更加高效、灵活和易用,提供了更多的性能优化和功能扩展,使得开发者能够更加便捷地构建和维护现代化的Web应用程序。
文档展示的工具版本是
webpack@4
webpack-cli@3
webpack 各主要版本区别
同类型工具 (打包工具大战)
工具名 | 备注 | 网址 | github地址 |
---|---|---|---|
Browserify | https://browserify.org/ | github | |
Grunt | http://www.gruntjs.net/ | github | |
Gulp | https://www.gulpjs.com.cn/ | github | |
parcel | https://www.parceljs.cn/ | github | |
rollup | https://www.rollupjs.com/ | github | |
snowpack | https://www.snowpack.dev/ | github | |
vite | https://cn.vitest.dev/ | github | |
………… |
PWA(Progressive Web Application)
npm i workbox-webpack-plugin -D
// webpack.config.js
const WorkboxPlugin = require('workbox-webpack-plugin');
{
plugins: [
// …………
new WorkboxPlugin.GenerateSW({
clientsClaim:true,
skipWaiting: true,
})
]
}
if(('serviceWorker'in navigator)){
window.addEventListener('load', () => {
navigator.serviceWorker.register('./service-worker.js').then(((registration) => {
}).catch(error => {
})
})
}
概念的简要说明
libray 库文件
module、chunk、bundle 三个概念的简要说明
- 模块(Module):在 webpack 中,每一个 JavaScript 文件都被视为一个模块。这个模块可以包含各种类型的代码(例如 ES6 模块、CommonJS 模块、AMD 模块等等),以及 CSS、图片、字体等资源文件。模块可以依赖其他模块,并且可以通过 import 或 require 语句来引用其他模块。
- 块(Chunk):块是 webpack 中的一个概念,表示一组相互依赖的模块。在 webpack 中,每当遇到一个入口模块时,就会从这个入口模块开始,分析它所依赖的所有模块,将它们打包成一个或多个块。块中可以包含多个模块,也可以包含其他块。
- 打包文件(Bundle):在 webpack 中,打包文件是指 webpack 最终生成的文件。它是由一个或多个块组成的,可以是 JavaScript 文件、CSS 文件、图片文件等等。打包文件可以在浏览器中被加载和执行,从而呈现出网页的样式和功能。