原来是这样啊!浅谈webpack4和webpack5的区别

简介: 相对于webpack4,webpack5内置了很多plugin插件,比如、打包、压缩、缓存

相对于webpack4,webpack5内置了很多plugin插件,比如、打包、压缩、缓存

代码压缩

webpack5对模块的合并、作用域提升

模块联邦

无需本地下载依赖,让代码直接cdn共享,直接构建项目

打包缓存优化

webpack4需要使用cache-loader打包结果来优化之后的打包性能
webpack5默认就开启了打包缓存(官方文档),无需再安装cache-loader

服务启动

文件处理模块

  • webpack4中打包文件,需要安装url-load、file-load
  • webpack5内置asset模块,打包文件无需配置

自定义plugin

Webpack 插件就像是你的助手,可以按照要求在构建过程中执行各种任务,例如处理文件、优化资源等。

原理

webpack宛如一条生成线,需经过一系列流程后将源文件输出结果,每个流程都是单一的,依次执行流程,多个流程之间有依赖关系,plugin是插入生成线中的功能,在指定时机对生成线的文件做处理。

Webpack 是一座大厦,插件是大厦里的工人。

用一个简单的比喻来解释插件的工作原理:

  1. 大厦的构建过程:大厦的建造需要经历多个阶段,从打地基、搭建框架到最终竣工。Webpack 也有类似的构建过程,包括解析模块、编译代码、生成输出文件等。
  2. 大厦里的工人(插件):插件就像大厦里的工人,他们拥有各种技能和工具,可以在不同的施工阶段做出贡献,完成各种任务。
  3. 工人与施工阶段的关联:每个工人在施工过程中有自己的职责和任务,依靠他们的技能来完成不同的工作。类似地,Webpack 插件也与构建过程中的不同阶段相对应,每个插件在特定的时机执行自己的任务。
  4. 工人的任务与插件的工作逻辑:工人们根据施工计划在特定的时间点完成自己的任务,例如安装管道、涂刷墙壁等。Webpack 插件也有类似的逻辑,它们在特定的构建阶段(如文件解析、代码编译、资源生成)执行自己的功能,例如处理文件、优化代码等。
  5. 工人与整个大厦的关系: 每个工人负责自己的任务,并相互协作来建造整个大厦。Webpack 插件也与整个构建过程相互协作,通过与其他插件和 Webpack 的集成,共同完成项目的构建工作。

归纳为以下几个步骤:

  1. 安装和配置插件:首先,你需要通过 npm 或 yarn 安装所需的插件,并将它们添加到 webpack.config.js 配置文件中的plugins数组中。
  2. 初始化插件实例:在配置文件中,你需要创建插件的实例对象,并传递任何必要的选项或参数。这将创建插件的一个实例,以便在构建过程中使用。
  3. 定义插件的钩子函数:插件会定义一些特定的钩子函数,用于在构建过程的不同阶段执行任务。Webpack 提供了一系列的钩子函数,如beforeRuncompilationoptimizeemit等。你需要根据需求选择合适的钩子函数,并在插件实例上实现这些钩子函数。
  4. 编写插件逻辑:在钩子函数中,你可以编写插件的逻辑来实现所需的功能。这可以是文件处理、资源优化、代码生成、依赖分析等任何自定义任务。你可以访问构建过程中的各个对象,如编译器(compiler)和编译(compilation),以获取有关构建状态和资源的信息。
  5. 与构建过程交互:插件可以通过调用特定的钩子函数,与构建过程的不同阶段进行交互。例如,在beforeRun钩子函数中,可以执行一些准备工作;在compilation钩子函数中,可以分析编译过程中的模块和依赖;在emit钩子函数中,可以进行代码生成和资源输出等操作。
  6. 处理构建结果: 插件可以根据自己的需求,修改或添加构建结果。例如,可以向输出的文件中插入特定的代码块,对生成的资源进行优化,生成额外的构建报告等。
相关文章
|
7月前
|
缓存 前端开发
Vite 和 Webpack 的区别
Vite 和 Webpack 的区别
230 0
|
1月前
|
缓存 前端开发 JavaScript
Webpack 4 和 Webpack 5 区别?
【10月更文挑战第23天】随着时间的推移,Webpack 可能会继续发展和演进,未来的版本可能会带来更多的新特性和改进。保持对技术发展的关注和学习,将有助于我们更好地应对不断变化的前端开发环境。
|
2月前
|
前端开发 JavaScript 数据可视化
Webpack加载器和插件之间有什么区别
【10月更文挑战第13天】Webpack加载器和插件之间有什么区别
|
7月前
|
前端开发 JavaScript 开发者
vite和webpack区别
【4月更文挑战第14天】Vite与Webpack都是前端构建工具,各有特点。Vite凭借原冷启动和模块热更新,适合现代前端项目,尤其是Vue、React等。它的配置简单,但社区支持较小。相比之下,Webpack拥有强大的插件系统和广泛社区支持,能适应各种项目需求,但配置复杂,启动慢。开发者应根据项目需求选择合适的工具。
159 2
|
7月前
|
JavaScript 开发者
Vite和Webpack的区别是什么
Vite和Webpack的区别是什么
|
7月前
|
JSON 前端开发 JavaScript
Vite和Webpack区别
Vite和Webpack区别
159 0
|
7月前
|
存储 缓存 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
90 1
|
7月前
|
缓存 监控 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
82 1
|
7月前
|
前端开发 JavaScript 算法
面试官:【webpack和vite的区别?vite一定比webpack快吗?vite的缺点是什么?webpack的热更新和vite的热更新区别?】
面试官:【webpack和vite的区别?vite一定比webpack快吗?vite的缺点是什么?webpack的热更新和vite的热更新区别?】
1356 0
|
7月前
|
缓存 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
139 0