什么是webpack

news2024/11/14 20:34:23

 

目录

1、什么是webpack(必会)

2、Webpack的优点是什么?(必会)

3、webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全(必会)

4、说一下 Webpack 的热更新原理(必会)

5、webpack与grunt、gulp的不同?(必会)

6、有哪些常见的Loader?他们是解决什么问题的?(必会)

7、Loader和Plugin的不同?(必会)


 

 

1、什么是webpack(必会)

webpack是一个打包模块化javascript的工具,在webpack里一切文件皆模块,通过loader转换文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建模块化项目

2、Webpack的优点是什么?(必会)

  1. 专注于处理模块化的项目,能做到开箱即用,一步到位

  2. 通过plugin扩展,完整好用又不失灵活

  3. 通过loaders扩展, 可以让webpack把所有类型的文件都解析打包

  4. 区庞大活跃,经常引入紧跟时代发展的新特性,能为大多数场景找到已有的开源扩展

3、webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全(必会)

Webpack 的运行流程是一个串行的过程,从启动到结束会依次执行以下流程:

1. 初始化参数:从配置文件读取与合并参数,得出最终的参数

2. 开始编译:用上一步得到的参数初始化 Compiler 对象,加载所有配置的插件,开始执行编译
3. 确定入口:根据配置中的 entry 找出所有的入口文件
4. 编译模块:从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理
5. 完成模块编译:在经过第4步使用 Loader 翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系
6. 输出资源:根据入口和模块之间的依赖关系,组装成一个个包含多个模块的 Chunk,再把每个 Chunk 转换成一个单独的文件加入到输出列表,这步是可以修改输出内容的最后机会
7. 输出完成:在确定好输出内容后,根据配置确定输出的路径和文件名,把文件内容写入到文件系统。

在以上过程中,Webpack 会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用 Webpack 提供的 API 改变 Webpack 的运行结果

4、说一下 Webpack 的热更新原理(必会)

webpack 的热更新又称热替换(Hot Module Replacement),缩写为 HMR。这个机制可以做到不用刷新浏览器而将新变更的模块替换掉旧的模块。

HMR的核心就是客户端从服务端拉去更新后的文件,准确的说是 chunk diff (chunk 需要更新的部分),实际上 WDS 与浏览器之间维护了一个 Websocket,当本地资源发生变化时,WDS 会向浏览器推送更新,并带上构建时的 hash,让客户端与上一次资源进行对比。客户端对比出差异后会向 WDS 发起 Ajax 请求来获取更改内容(文件列表、hash),这样客户端就可以再借助这些信息继续向 WDS 发起 jsonp 请求获取该chunk的增量更新。

后续的部分(拿到增量更新之后如何处理?哪些状态该保留?哪些又需要更新?)由 HotModulePlugin 来完成,提供了相关 API 以供开发者针对自身场景进行处理,像react-hot-loader 和 vue-loader 都是借助这些 API 实现 HMR。

5、webpack与grunt、gulp的不同?(必会)

1) 三者之间的区别

三者都是前端构建工具,grunt和gulp在早期比较流行,现在webpack相对来说比较主流,不过一些轻量化的任务还是会用gulp来处理,比如单独打包CSS文件等。

grunt和gulp是基于任务和流(Task、Stream)的。类似jQuery,找到一个(或一类)文件,对其做一系列链式操作,更新流上的数据, 整条链式操作构成了一个任务,多个任务就构成了整个web的构建流程。

webpack是基于入口的。webpack会自动地递归解析入口所需要加载的所有资源文件,然后用不同的Loader来处理不同的文件,用Plugin来扩展webpack功能。

2) 从构建思路来说

gulp和grunt需要开发者将整个前端构建过程拆分成多个Task,并合理控制所有Task的调用关系 webpack需要开发者找到入口,并需要清楚对于不同的资源应该使用什么Loader做何种解析和加工

3) 对于知识背景来说

gulp更像后端开发者的思路,需要对于整个流程了如指掌 webpack更倾向于前端开发者的思路

6、有哪些常见的Loader?他们是解决什么问题的?(必会)

1、 file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件

2、 url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去

3、 source-map-loader:加载额外的 Source Map 文件,以方便断点调试

4、 image-loader:加载并且压缩图片文件

5、 babel-loader:把 ES6 转换成 ES5

6、 css-loader:加载 CSS,支持模块化、压缩、文件导入等特性

7、 style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。

8、 eslint-loader:通过 ESLint 检查 JavaScript 代码

7、Loader和Plugin的不同?(必会)

1) 不同的作用

Loader直译为"加载器"。Webpack将一切文件视为模块,但是webpack原生是只能解析js文件,如果想将其他文件也打包的话,就会用到loader。 所以Loader的作用是让webpack拥有了加载和解析非JavaScript文件的能力。

Plugin直译为"插件"。Plugin可以扩展webpack的功能,让webpack具有更多的灵活性。 在 Webpack 运行的生命周期中会广播出许多事件,Plugin 可以监听这些事件,在合适的时机通过 Webpack 提供的 API 改变输出结果。

2) 不同的用法

Loader在module.rules中配置,也就是说他作为模块的解析规则而存在。 类型为数组,每一项都是一个Object,里面描述了对于什么类型的文件(test),使用什么加载(loader)和使用的参数(options)

Plugin在plugins中单独配置。 类型为数组,每一项是一个plugin的实例,参数都通过构造函数传入。

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

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

相关文章

为什么说接口幂等性很重要

先讲个故事大概三年前,外卖平台 Uber Eats 在印度发生了一次重大事故,使得用户可以免费获得食品。一天早上,有人试图通过印度的 Uber Eats 订购食物,并使用印度的支付平台 Paytm 付款。但是,他的账户里面没有足够的余额…

蓝牙耳机哪款性价比高音质好?2023公认音质最好的蓝牙耳机

如今音乐成了当下解压的方式之一,甚至是集中注意力的法器。耳机作为传播音乐的媒介,每个人对自己的专属耳机总有那么点小追求,高质量的耳机不仅保护双耳,带来的音质能让你的耳朵分分钟怀孕,下面分享几款2023年音质高的…

Cain执行中间人攻击

实验目的:通过构建虚拟场景,了解中间人攻击和钓鱼网站攻击的执行流程,熟练使用Cain & Abel工具实现攻击,并掌握识别和防御此类攻击的技术原理和方法。 一、场景简介 甄某为犯罪嫌疑人,警察想获得甄某在其单位网站…

IB学科学习方法分享,看看不同学科怎么学习?(一)

在这个部分,我们邀请到了在各个学科中突出的同学们,让他们介绍自己的学习方法。同辈的经验总是我们能够获取的珍贵的宝藏! 分享人:吴 分享学科:VA HL (个人选课:HL:VA 中文 经济…

同行不同命:极兔喜、韵达愁?

配图来自Canva可画 年前买坚果、牛奶、灯笼、对联等年货,年后寄香肠、腊肉、泡菜、水果等特产,春节前后是快递业迎来收发货小高峰,三通一达,顺丰、京东、极兔相继宣布“春节不打烊”消息,全力保障快递运力。 春节快递…

力扣-组合两个表

大家好,我是空空star,本篇带你了解一道简单的力扣sql练习题。 文章目录前言一、题目:175. 组合两个表二、解题1.left join提交SQL运行结果2.right join提交SQL运行结果总结前言 一、题目:175. 组合两个表 表: Person ----------…

Bernstein-Vazirani算法

B-V算法 (1) 问题描述 给定布尔函数f:{0,1}n→0,1f:{\left\{ {0,1} \right\}^n} \to{0,1}f:{0,1}n→0,1, 函数fff的值是由输入比特串xxx和确定的比特串sss做模2意义下的内积:f(x)x⋅s(mod2),f\left( x \right) x \cdot s\left( {\bmod 2} \right),f(x)x⋅s(mod2),…

【Node.js】 npm与包

npm与包什么是包包的来源为什么需要包从哪里下载包怎么下载包初体验在项目中安装包的命令npm的注意点包的语义化版本规范包管理配置文件(package.json)当第三方包的体积过大时快速创建package.jsondependencies节点devDependencies节点卸载包解决下载包速…

H.264视频隐写中可用于隐藏的场地(变换过程)

与静止图像中的信息隐藏类似,通过位平面替换的方式,亮度DCT系数通常被用于信息隐藏。 Ma等[77]提出将信息嵌入在I-frame中量化的DCT系数中(亮度)。在分析DCT系数与像素值产生的失真之间的关系的基础上,对几个系数进行配对,以达到数…

Web前端的未来发展怎样?

在求职的道路上,很多人都会经历漫长的迷茫期,如何找到职业方向成为人很多正在探索的事情!当我们决定学习一个技能的时候,首先会考虑到零基础是否可以学,这个技术的前景怎么样,薪资高不高,未来发…

JavaSE学习day8 API的使用和String的内存原理

1.API 1.1API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这…

基于机器学习的推荐算法研究与实现

摘要随着互联网的普及,人们可以通过搜索引擎、社交网络等方式获取大量的信息资源。但是,面对如此之多的信息,人们往往会感到迷失和困惑,无法快速准确地找到自己需要的信息。在这种情况下,推荐算法的出现为我们提供了一…

如何使用Xshell巧妙的连接服务器

最近一直在想到底写那些技术性文章,正好我之前买的一台服务器还没怎么使用,所以准备打算出一期在Xshell上使用服务器的教程的。 首先,为什么要使用Xshell连接云服务器呢? 1、自己打开服务器很麻烦,每次都要在网页进行登录操作&…

2023美赛C题:预测 Wordle 结果

以下内容全部来自本人人工翻译,仅供参考。 文章目录背景要求附件数据文件条目描述纽约时报网站上发布的Wordle指导方针词汇表参考文献服务背景 Wordle是目前纽约时报每天提供的一种受欢迎的谜题。玩家试图通过在六次或更少的机会内猜测一个五个字母的单词来解决谜题…

SAC代码 pytorch框架,2023年了还在用假的SAC?

呀他温,博主这次真要红温了,中路一个红温兰博请求对线!!!!!! 莫烦老师的强化学习视频不出SAC,我只能去看看别的程序员讲解SAC算法。结果。。。。 唉,&#…

后端,我是认真的

web框架介绍 1. 什么是web框架 应该叫web应用框架(web application framework)是一种开发框架。 通俗点来说,就是用来开发web应用的程序。 2. 为什么要使用框架来开发 互联网行业流行一句话叫“不要重复造轮子”,特别是对于新手和应用层开发人员。对于w…

TLP5754的代替品SLM343兼容光耦的单通道隔离驱动 应用解决方法

TLP5754的代替品SLM343兼容光耦的单通道隔离驱动应用解决方法是一种光兼容的单通道隔离MOSFET、IGBT具有不同驱动电流能力的栅极驱动器,以及UVLO电压电平。峰值输出电流为4.0A。主要特点和特点带来显著的性能和可靠性。性能亮点包括高共模瞬态抗扰度(CMT…

给 “rm” 命令添加个“回收站”,再也不用担心误删文件了!

1.rm命令解析 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。 注意:使用rm命令要格外小心。因为一旦删除了…

WebSocket内存马之tomcat-websocket源码实现(内存马系列篇七)

写在前面 这篇主要是分析一下WebSocket协议在Tomcat容器中的源码实现,方便大家在后面能够更好的了解下一篇Websocket型内存马的原理。 这个也是内存马系列第七篇 Websocket 什么是websocket? 首先来了解一下什么是websocket WebSocket全双工通信协…

2023-2-16 刷题情况

神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向,兰兰同学在自学了一本…