面试:webpack常用loader和plugin

news2025/1/10 1:24:52

Webpack简介

Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。

Webpack的作用 

 Loader

webpack中提供了一种处理多种文件格式的机制,这便是Loader,我们可以把Loader当成一个转换器,它可以将某种格式的文件转换成Wwebpack支持打包的模块。

在Webpack中,一切皆模块,我们常见的Javascript、CSS、Less、Typescript、Jsx、图片等文件都是模块,不同模块的加载是通过模块加载器来统一管理的,当我们需要使用不同的 Loader 来解析不同类型的文件时,我们可以在module.rules字段下配置相关规则。

常用的Loader 

1. babel-loader

babel-loader基于babel,用于解析JavaScript文件。babel有丰富的预设和插件,babel的配置可以直接写到options里或者单独写道配置文件里。

2. ts-loader

为webpack提供的 TypeScript loader,打包编译Typescript

3. markdown-loader

markdown编译器和解析器

4. raw-loader

可将文件作为字符串导入

5. file-loader

用于处理文件类型资源,如jpg,png等图片。返回值为publicPath为准

6. url-loader:

它与file-loader作用相似,也是处理图片的,只不过url-loader可以设置一个根据图片大小进行不同的操作,如果该图片大小大于指定的大小,则将图片进行打包资源,否则将图片转换为base64字符串合并到js文件里。

7. svg-sprite-loader

会把引用的 svg文件 塞到一个个 symbol 中,合并成一个大的SVG sprite,使用时则通过 SVG 的 <use> 传入图标 id 后渲染出图标。最后将这个大的 svg 放入 body 中。symbol的id如果不特别指定,就是你的文件名。

8. style-loader

通过注入<style>标签将CSS插入到DOM中

9. css-loader

仅处理css的各种加载语法(@import和url()函数等),就像 js 解析 import/require() 一样

10. postcss-loader

PostCSS 是一个允许使用 JS 插件转换样式的工具。 这些插件可以检查(lint)你的 CSS,支持 CSS Variables 和 Mixins, 编译尚未被浏览器广泛支持的先进的 CSS 语法,内联图片,以及其它很多优秀的功能。

11. less-loader

解析less,转换为css

Plugin 

Webpack 就像一条生产线,要经过一系列处理流程后才能将源文件转换成输出结果。 这条生产线上的每个处理流程的职责都是单一的,多个流程之间有存在依赖关系,只有完成当前处理后才能交给下一个流程去处理。 插件就像是一个插入到生产线中的一个功能,在特定的时机对生产线上的资源做处理。

常用Plugin 

1. copy-webpack-plugin

将已经存在的单个文件或整个目录复制到构建目录。

2. html-webpack-plugin

基本作用是生成html文件

3. clean-webpack-plugin

默认情况下,这个插件会删除webpack的output.path中的所有文件,以及每次成功重新构建后所有未使用的资源。

4. mini-css-extract-plugin

本插件会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件。

5. webpack.HotModuleReplacementPlugin

模块热替换插件,除此之外还被称为 HMR。

6. webpack.DefinePlugin

创建一个在编译时可以配置的全局常量。这会对开发模式和生产模式的构建允许不同的行为非常有用。

7. webpack-bundle-analyzer

可以看到项目各模块的大小,可以按需优化.一个webpack的bundle文件分析工具,将bundle文件以可交互缩放的treemap的形式展示。

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

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

相关文章

如何选择专业的低代码开发平台?为企业数字化转型保驾护航

在当今快节奏的商业环境中&#xff0c;软件开发已经成为任何组织的关键方面。然而&#xff0c;由于市场上有无数的软件开发平台&#xff0c;选择合适的平台可能是一项艰巨的任务。对于任何想要创建满足其业务需求的高质量应用程序的组织来说&#xff0c;选择正确的软件开发平台…

英国卡迪夫大学学生使用ChatGPT写论文拿到一等成绩

近日&#xff0c;BBC报道了一则新闻&#xff1a; 卡迪夫大学一名学生在期末考试中使用ChatGPT撰写了一篇论文&#xff0c;并获得了一等成绩&#xff0c;要知道这是英国大学中最高等级的成绩&#xff0c;而他的另一篇论文没有使用ChatGPT&#xff0c;只获得了二等一的成绩。 此…

1.6. 数组

数组是一种数据结构&#xff0c;用于存储相同类型的多个元素。在 Java 中&#xff0c;数组是一个对象&#xff0c;它具有一定数量的连续内存空间。数组中的每个元素都有一个索引&#xff0c;用于访问和操作元素。 1.6.1. 数组的声明与初始化 在 Java 中&#xff0c;可以使用以…

Find My资讯|iOS17将重点改进钱包、Find My、SharePlay和AirPlay等功能

彭博社的马克・古尔曼&#xff08;Mark Gurman&#xff09;在最新一期 Power On 时事通讯中表示&#xff0c;苹果即将推出的 iOS 17 系统将改进 Wallet、Find My、SharePlay 和 AirPlay 等多项功能。 古尔曼在博文中还表示苹果会增强 Find My 的位置服务&#xff0c;同样也没…

前端数据可视化开发平台FlyFish数据源应用教程详解

介绍 飞鱼&#xff08;FlyFish&#xff09;是云智慧开源的一款免费的数据可视化编排平台。通过简易的方式快速创建数据模型&#xff0c;通过拖拉拽的形式&#xff0c;快速生成一套数据可视化解决方案。在飞鱼产品中可以通过直接连接 MySQL 、 Oracle 等数据库直接从数据源中获…

LiangGaRy-学习笔记-Day17

1、磁盘的介绍 自动分区、手工分区、命令工具分区 1.1、磁盘分类 根据介质来区分&#xff1a; 机械硬盘和固态硬盘 通过盘大小&#xff1a; 3.5英寸和2.5英寸 通过接口分类&#xff1a; SAS、SATA、FC scisi 根据功能&#xff1a; 桌面和企业级别 1.2、磁盘类型 HD…

关于【Stable-Diffusion WEBUI】生成全身图:插件解决面部崩坏问题

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;脸难看的问题&#xff08;1.1&#xff09;面部修复&#xff08;1.2&#xff09;远景脸部问题 &#xff08;二&#xff09;面部修复插件&#xff08;Face Editor&#xff09;&#xff08;2.1&#xff09;模型…

最常见JS加密保护代码的方法

当谈到JavaScript&#xff08;简称JS&#xff09;代码的保护时&#xff0c;加密是一种常见的策略。加密可以帮助保护你的JS代码&#xff0c;防止未经授权的访问、修改和复制。在本文中&#xff0c;我将向你介绍一些常用的js加密保护方法&#xff0c;并提供一些通俗易懂的示例代…

如何有效和快速清理C盘

电脑在运行过程中会产生磁盘碎片&#xff0c;时间一长垃圾文件就会越多。而且我们平常不敢乱清理C盘中的文件&#xff0c;以免因为误删导致系统出现故障&#xff0c;所以垃圾文件才肆意占用系统盘空间。不过我们可以选择系统自带的“磁盘清理”功能“制服”它&#xff0c;给C盘…

(转载)多种群遗传算法的函数优化算法

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1 理论基础 1.1 遗传算法早熟问题 遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应的全局优化概率搜索算法。由于优化时不依赖于梯度&#xff0c;具有很强…

商代数与积代数

商代数 设 R R R使 A < S , ∗ 1 , ∗ 2 , ⋯ , ∗ n > A \left<S, *_1, *_2,\cdots, *_n\right> A⟨S,∗1​,∗2​,⋯,∗n​⟩上的同余关系&#xff0c;则 R R R使 S S S上的等价关系&#xff0c;因此 R R R可诱导出 S S S的一个划分 S / R { [ a ] R ∣ a ∈…

【大数据处理与可视化】七、时间序列分析

【大数据处理与可视化】七、时间序列分析 实验目的实验内容实验步骤一、案例——股票收盘价分析1、读取数据&#xff0c;并转换成DataFrame对象展示2、将“交易日期”一列设置为行索引3、根据数据中“收盘价”一列的数据绘制一张折线图&#xff0c;以了解近些年来收盘价格的趋势…

Buck环路响应伯德图Mathcad绘制

一直不理解环路响应&#xff0c;调试也是应用参考电路&#xff0c;虽然自动化的课程忘的差不多了&#xff0c;但也不是偷懒的借口&#xff0c;直到昨天看到可以用Mathcad计算BUCK电路工作在电压控制的CCM连续模式&#xff0c;这是基于开关平均法推导出的小信号传递函数模型。原…

IDEA-报错 Failed to read artifact descriptor for xxx解决方法

项目场景&#xff1a; idea下载若依微服务的项目&#xff0c;配置环境产生了报错 问题描述 在idea里配置环境时maven报错Failed to read artifact descriptor for xxxx 原因分析&#xff1a; 在进行导包的时候maven和jdk版本导致的&#xff0c;更换版本之后大部分报错不存在…

分享一个科幻风的404

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>404页面</title><script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r125/th…

PyTorch-Loss Function and BP

目录 1. Loss Function 1.1 L1Loss 1.2 MSELoss 1.3 CrossEntropyLoss 2. 交叉熵与神经网络模型的结合 2.1 反向传播 1. Loss Function 目的&#xff1a; a. 计算预测值与真实值之间的差距; b. 可通过此条件&#xff0c;进行反向传播。 1.1 L1Loss import torch from …

面试:Webpack的核心概念

基本概念 Entry&#xff1a;入口&#xff0c;Webpack 执行构建的第一步将从 Entry 开始&#xff0c;可抽象成输入。Module&#xff1a;模块&#xff0c;在 Webpack 里一切皆模块&#xff0c;一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。Chu…

Socket(一)

文章目录 1. 简介2. 用Socket从服务器读取3. 用Socket写入服务器4. 构造和连接Socket4. 选择从哪个本地接口连接5. 构造但不连接 1. 简介 Socket允许程序员将网路连接看作是另外一个可以读/写字节的流&#xff0c;Socket对程序员掩盖了网络的底层细节&#xff0c;如错误检测、…

单例模式总结

(153条消息) 解决线程安全问题&&单例模式_Master_hl的博客-CSDN博客 饿汉式 在类初始化时直接创建实例对象&#xff0c;不管你是否需要这个对象都会创建 直接实例化饿汉式&#xff08;简洁直观&#xff09; 特点&#xff1a;构造器私有化、自行创建且用静态变量保…

基于改进ISODATA算法的负荷场景曲线聚类(matlab代码)

目录 1 主要内容 聚类中心选取步骤 核方法 2 部分代码 3 程序结果 4 程序链接 1 主要内容 程序复现文献《基于机器学习的短期电力负荷预测和负荷曲线聚类研究》第三章《基于改进ISODATA算法的负荷场景曲线聚类》模型&#xff0c;该方法不止适用于负荷聚类&#xff0c;同样…