webpack4和webpack5有什么区别

news2024/11/28 16:26:38

webpack4和webpack5有什么区别

  • 前言
  • 一、比较
  • 二、使用步骤
    • 1.5缓存使用方法和构建速度对比
    • 2.资源模块处理
    • 3.Webpack 5 支持在请求中处理协议。
    • 4.tree-shaking。

前言

Webpack4和Webpack5是两个版本的Webpack,其中Webpack5是Webpack的最新版本。


一、比较

性能:Webpack5相对于Webpack4有更好的性能表现,尤其是在构建速度和Tree Shaking方面。

模块联邦:Webpack5引入了模块联邦的概念,可以让多个Webpack构建的应用程序共享模块,从而减少了代码冗余。

持久性缓存:Webpack5引入了持久性缓存,通过使用持久性哈希来生成文件名,可以更好地利用浏览器缓存,从而提高应用程序的加载速度。

解析器:Webpack5支持WebAssembly模块、JSON模块和TypeScript模块的解析。

构建输出:Webpack5支持输出多个bundle,通过设置output.chunkFilename参数来实现。

移除插件:Webpack5移除了一些不常用的插件,例如UglifyJsWebpackPlugin和CommonsChunkPlugin。

二、使用步骤

1.5缓存使用方法和构建速度对比

构建速度上 5 比 4 速度更快,
都有 cache 属性
webpack5比webpack4的文件压缩策略更优,分割文件后的vendor体积缩小
webpack5 缓存构建性能优于webpack4
webpack5 缓存的功能显著优于webpack4

4:的缓存文件只有 true false,不能从新命名之类的 所以引入插件

npm install hard-source-webpack-plugin -D
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
new HardSourceWebpackPlugin()

在这里插入图片描述

5:

cache: {
    type: 'filesystem',
    cacheDirectory: path.join(__dirname, 'node_modules/.cac/webpack')
  },

在这里插入图片描述

2.资源模块处理

4:中处理字体图标等文件需要单独引入loader进行处理
imit: 当文件大于10000 时单独打包
在这里插入图片描述
5:maxSize: 8 * 1024

module: {
    rules: [
		{
        test: /\.(png|svg|jpg|jpeg|gif)$/i,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            maxSize: 8 * 1024,
          },
        },
        generator: {
          filename: 'images/[name].[hash:6][ext]',
        },
      },

3.Webpack 5 支持在请求中处理协议。

支持data:支持 Base64 或原始编码。Mimetype 可以在module.rule中被映射到加载器和模块类型。例如:import x from “data:text/javascript,export default 42”。
支持file:支持引入本地资源文件(非项目中资源)
支持http(s):需要通过new webpack.experiments.schemesHttp(s)UriPlugin()选择加入。
默认情况下,当目标为 "web "时,这些 URI 会导致对外部资源的请求(它们是外部资源)

// data
import data from "data:text/javascript,export default 'hello webpack4'"
console.log(data)

// file
import data from "file:///Users/liumeng/Desktop/tx-classroom-resource/%E8%AF%BE%E7%A8%8B%E9%A1%B9%E7%9B%AE/webpack/webpack4/template/eslintinit.1a7d4ecc.jpg"
const addImg = document.querySelector('.addImg')
addImg.setAttribute('src',data)

// https
// webpack.config.js
experiments: {
  buildHttp: {
    allowedUris: [
      "https://fast-learn-oss.youbaobao.xyz/",
      "http://hp.hpbb.me//upload/20171108173745476048.jpeg?x-oss-process=style/thumb"
    ],
    frozen: false,
    cacheLocation: false,
    upgrade: true
  }
},
// index.html
<img  class="addImg" alt="">
<img  class="addImg2" alt="">
  
// index.js
import data from 'https://fast-learn-oss.youbaobao.xyz/tb/category6.png';
const addImg = document.querySelector('.addImg')
addImg.setAttribute('src',data)
import data2 from 'http://hp.hpbb.me//upload/20171108173745476048.jpeg?x-oss-process=style/thumb';
const addImg2 = document.querySelector('.addImg2')
addImg2.setAttribute('src',data2)

4.tree-shaking。

4:全打包
5:认为你没有使用到的引用 会不打包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、Go语言初识

在日新月异的技术进步中,我们程序设计在不断的优化,程序的编译速度,程序的设计速度,程序的可读性等都在不断的提升。在这样的时代背景下,一些技术的先驱,技术的头部公司在不断的探索,GO语言就是在这样的环境中被设计开发的。 我们技术团队也在不断的学习,不断的进步,…

golang入门记录

参考&#xff1a; https://www.runoob.com/go/go-tutorial.html https://zhuanlan.zhihu.com/p/63310903 下载安装包&#xff1a; windows:https://dl.google.com/go/go1.20.2.windows-amd64.msi 对基础设施&#xff0c;包括跨操作系统、网络、多线程&#xff0c;web、cli都比…

OpenCV EigenFaceRecognizer 人脸识别

目录 一、人脸检测vs人脸识别 二、数据库 三、准备需要识别的人脸 四、人脸识别(OpenCV) 一、人脸检测vs人脸识别 人脸检测只是需要检测图像中是否有人脸&#xff0c;而人脸识别是一个程序能够识别出给定图像或者视频中的人脸。 二、数据库 人脸数据库&#xff0c;这个博客…

大数据之Hadoop分布式数据仓库HBase

目录&#xff1a; 一、Hadoop的局限二、HBase简介三、HBase Table四、数据的读写流程简述五、HBase Java API 1.0 的基本使用六、HBase Java API 2.0 的基本使用七、正确连接Hbase八、Hbase 常用 Shell 命令九、Hbase容灾与备份十、引入Phoenix core JAR包&#xff08;HBase中间…

好用免费的电脑摄像头录视频软件分享!

案例&#xff1a;如何录制电脑的摄像头&#xff1f; 【这周我需要开一个视频会议&#xff0c;会议十分重要&#xff0c;我希望把它录制下来。有没有小伙伴知道&#xff0c;电脑摄像头如何录制&#xff1f;求一个可以快速上手的方法&#xff01;】 在现如今的数字化时代&#…

计算机网络学习03(OSI、TCP/IP网络分层模型详解))

1、OSI 七层模型 OSI 七层模型 是国际标准化组织提出一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 每一层都专注做一件事情&#xff0c;并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路由和寻址功能&#xff0…

【小程序】图文教程:完整说明如何把小程序代码提交到gitee上

目录 建项目本地打开配置远程分支发布到远程分支检验后续提交 建项目 注*&#xff1a;会在gitee上建项目的可以略过 进入到gitee官网&#xff0c;点击右侧的&#xff0c;创建新项目 进入到该页面&#xff1a; 填好之后&#xff0c;点击创建 进入下面页面&#xff0c;点击初…

用GPT 从0搭建 Jest 到帮写测试用例

本文作者为 360 数据平台部前端开发工程师 为什么要用AI写单测 这个问题分两点来说&#xff0c;第一是为什么要写单测&#xff0c;第二是为什么要用AI。 先来说为什么写单测&#xff0c;这很简单&#xff0c;我们项目或者说我们前端团队有公共模块&#xff0c;包含有组件类型、…

ipv6地址技术详解

一、什么是IPv6&#xff1f; IPv6是英文“Internet Protocol Version 6”&#xff08;互联网协议第6版&#xff09;的缩写&#xff0c;是互联网工程任务组&#xff08;IETF&#xff09;设计的用于替代IPv4的下一代IP协议&#xff0c;其地址数量号称可以为全世界的每一粒沙子编…

你可能需要的IDEA-Java开发插件

Idea开发插件 Alibaba Cloud AI Coding Assistant 阿里云智能编码插件&#xff08;Alibaba Cloud AI Coding Assistant&#xff09;是一款AI编程助手&#xff0c;它提供代码智能补全和代码示例搜索能力&#xff0c;帮助你更快更高效地写出高质量代码。 让我觉得比较有意思的…

Docker安装在Linux系统上(纯步骤)

Docker安装在Linux系统上操作步骤 本文章只有操作步骤&#xff0c;没有原理解释&#xff0c;只是用来提醒自己安装步骤 下面是docker官网&#xff0c;也有安装详情 https://docs.docker.com/engine/install/centos/ 安装分为四步走 我使用的是CentOS7版本&#xff0c;下面命令…

Linux基本权限

文章目录 前言一、Shell命令以及运行原理1.Shell的定义2.为什么用户不能直接使用kernel&#xff1f; 二、Linux中的权限1.权限是什么&#xff1f;2.如何操作权限呢&#xff1f;&#xff08;怎么修改权限&#xff09;1. 修改文件属性2. 修改文件角色 3.为什么要有权限 三、粘滞位…

直接插入排序(Straight Insertion Sort)

本文已收录于专栏 《算法合集》 一、简单释义 1、算法概念 对插入第i个记录时&#xff0c;R1、R2、…、Ri-1均已排好顺序。因此&#xff0c;将第i个记录Ri-1、…、R2、R1进行比较&#xff0c;找到合适的位置插入&#xff0c;他简单明了但是速度很慢。 2、算法目的 把无序数组通…

windows下免费本地部署类ChatGpt的国产ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别下最低只需 6GB 显存&#xff09;。 Chat…

禁止右键禁止复制禁止选择网页内容的CSS和JS代码(支持PC和移动端)

禁止右键禁止复制禁止选择网页内容的CSS和JS代码&#xff08;支持PC和移动端&#xff09;&#xff0c;收藏吧&#xff0c;用得上。 body {-moz-user-select: none;/* Firefox私有属性 */-webkit-user-select: none;/* WebKit内核私有属性 */-ms-user-select: none;/* IE私有属…

项目1登录功能优化(中间件添加操作信息,统一日志输出)

中间件添加操作信息 context增加属性userid用于储存访问者id,便于后期使用中间件添加操作信息 type Context struct { //......,context其他属性 Userid int} 对于添加操作信息的中间件函数 // 添加用户操作中间件func Addoperationmid(db *sql.DB) gee7.HandlerFunc { retu…

SpringBoot【运维实用篇】---- 多环境开发

SpringBoot【运维实用篇】---- 多环境开发 1. 多环境开发&#xff08;yaml单一文件版&#xff09;2. 多环境开发&#xff08;yaml多文件版&#xff09;3. 多环境开发&#xff08;properties多文件版&#xff09;4. 多环境开发独立配置文件书写技巧5. 多环境开发控制 讲的内容距…

【LeetCode】1000题挑战(220/1000)

1000题挑战 没有废话&#xff0c;直接开刷&#xff01; 目录 1000题挑战 没有废话&#xff0c;直接开刷&#xff01; 第一题&#xff1a;119. 杨辉三角 II - 力扣&#xff08;Leetcode&#xff09; 题目接口 解题思路 代码&#xff1a; 过过过过啦&#xff01;&#x…

【Python】【进阶篇】13、Django安装与配置教程

目录 Django安装与配置教程1. Windows系统安装Django1) 离线安装2) 在线安装3) 配置Django环境变量4) 检查是否安装成功 2. Linux和Mac系统安装Django1) 使用终端在线安装2) 下载安装包离线安装 Django安装与配置教程 本节主要对 Django 在各个平台上的安装方式与配置进行讲解…

Blender 插件UvSquares

目录 1. UvSquares插件1.1 解压UvSquares插件1.2 blender偏好设置1.3 打开插件1.4 安装插件1.5 勾选插件UvSquares1.6 安装UvSquares插件前1.7 安装UvSquares插件后 1. UvSquares插件 Blender 的 UV 编辑器工具&#xff0c;可将 UV 选择重塑为网格。 下载&#xff1a;https:/…