前端面试题整理-webpack

在这里插入图片描述
实现前端模块化,将多个 js,打包成一个 bundle.js (其他类型文件交由各自的 loader 处理)

1. webpack 了解吗?大概介绍一下

一种打包工具,实现前端模块化,将多个 js,打包成一个 bundle.js (其他类型文件交由各自的 loader 处理)。
其中核心概念:
entry: 定义入口 js 文件,一般单页项目定义一个,多页项目可传递数组
output: 定义输出文件的格式和目录
module: loader 定义的地方,常见的 jsx 处理用 babel-loader, vue 用 vue-loader, less 用 less-loader.(css 相对特殊,需要三个 loader 分别进行处理。各司其职,功能最小化)
plugin:
html-webpack-plugin, 在 html 文件中自动引入 js 文件
clean-webpack-plugin,在下次构建前清理上一次的打包产物

以 entry 作为入口,对代码静态分析 import 了哪些文件,通过不同的 loader 对不同后缀的文件处理,最终打包到一起。在最后的打包过程中,插件可以在适当的时机进行额外的操作。

2. loader 了解吗?常见的 loader 有哪些?

loader是从后往前执行,谁先定义后执行。
loader 本质是在 webpack 处理文件前,进行一次转换,可以是对新js语法的兼容(babel),也可以是对 css 文件的处理(css-loader, style-loader)
webpack 本身只能处理 js 文件,所以需要各种 loader 来对其他类型的文件进行处理。也正是因为 loader 机制的设定,webpack 的能力也非常便于扩展。

常见loader:
babel-loader: 实现对 es6 语法向 es5 的兼容
less-loader: 实现 .less 文件向 .css 文件的转换
css-loader: 处理 css 文件中,url, @import 这样的语法,转换成 js 可以处理的形式
style-loader: 将 css 文件,改成生成 style 标签并插入 html 中的功能
在这里插入图片描述
在这里插入图片描述

3. plugin 了解吗?常见的 plugin 有哪些?

plugin是对webpack现有功能的扩展,可以用于打包优化、文件压缩等多种目的。
常见plugin:
mini-css-extract-plugin:将项目中引入的 css 文件合并提取到一个 css 文件中,将 css 单独独立出来,可以更好的和 js 文件并行加载,提升页面性能。实际配置中,可以在开发环境使用 style-loader, 加快编译速度,而生产环境中使用 mini-css-extract-plugin,提高页面加载速度
html-webpack-plugin: 将打包出来的 js 文件,自动插入指定的 html 模版中,并生成 html 文件。可以多次使用,从而打包多个页面。
clean-webpack-plugin: 可以在打包前,清除上一次打包的产物
copy-webpack-plugin: 可以将指定目录下的文件直接复制到指定路径。一般用于处理静态资源的移动,比如图片,视频等
DefinePlugin: 可以配置全局对象,在页面 js 执行时可以直接获取。也就是在编译时,将变量注入运行时的环境。

4. loader 和 plugin 有什么区别?

plugin 具有比 loader 更大的能力:能够在 webpack 的整个编译过程中介入。
而 loader 只有处理单个文件时,会被使用。
比如 style-loader,一个 css 文件,就会插入一个 style 标签,而我们想要的 css 往往是合并成一个 .css 文件,而不是以 style 标签的形式插入。
style-loader 由于每次只能处理一个文件,所以并不具备把所有 css 文件合并的能力。
plugin 就是为了弥补这些不足而出现的,它的能力范围更大。

5. webpack 打包比较慢,为什么?有什么优化方法吗?

(1)webpack为什么打包慢?
webpack 的工作,会根据 entry 中指定的 js,一个一个加载并调用 loader 进行处理后,最终生成一个 bundle 文件。
打包慢,大概率就在于要处理的文件太多。不过现在 webpack 在文件修改后,本身就有优化,所以打包慢,一般发生在冷启动,和生产环境打包时。
(2)优化方法?
在这里插入图片描述

调整 loader 配置,增加 exclude,不对 node_modules 中文件进行处理,通过减少要处理的文件来减少构建时间;
在这里插入图片描述

增加 cache-loader,缓存之前的结果;
在这里插入图片描述

使用 Terser 开启多进程;
在这里插入图片描述
拆分项目,采用微前端的方案进行加载(把一个项目的多个页面进行拆分,通过微前端的技术将一个一个项目合并起来)。

6. webpack 有什么方法,可以使打包出来的页面性能更好?

(1)js, css 文件压缩,减少文件体积
(2)js, css 打包文件名增加 hash 值(output 中 filename 使用 [hash] 即可插入文件 hash 值),借助 http 强缓存减少加载耗时
(3)图片压缩,借助 image-webpack-loader 或者手动压缩图片后引入,减少页面资源体积
(4)tree-shaking:webpack 中开启 usedExports: true。引入的 npm 包如果支持,也会自动 shaking,无需配置
(5) 通过懒加载拆分不同路由的文件,按需加载 js
懒加载:不是在最顶部放入import,会返回一个promise。当文件被加载完成后,才会执行它的.then
在这里插入图片描述

7. tree-shaking 是什么?如何开启?

原理:静态代码分析
对于不是ES6语法定义的npm包可以坐tree-shaking吗?不能,开启 tree-shaking 的条件是使用 import 和 export。
本质:对代码静态分析,从入口文件开始,递归分析所有文件和他们的依赖关系。这一分析可以确定,哪些模块和模块的导出是被实际使用的。标记未使用的代码,即可在打包阶段进行移除。
webpack 中,通过配置 usedExports = true 开启 tree-shaking。
对于 npm 包中的内容,会通过 package.json 中的 sideEffects 来判断是否对其进行 tree-shaking
如果 sideEffects 为 false, 则认为该 npm 包没有副作用(修改了全局变量,执行某些初始化逻辑等),会正常进行 tree-shaking,否则不做处理。
该参数也可以指定为数组,从而对那些文件不进行 tree-shaking。
要注意,开启 tree-shaking 的条件是使用 import 和 export。如果是一些旧的 commonjs 等,是不支持 tree-shaking 的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

婚恋交友系统该如何制作成品系统?

制作婚恋交友系统的成品系统是一个综合性的过程,涉及多个关键步骤和技术要点。以下是一个详细的制作流程: 1. 需求分析 市场调研:首先需要对婚恋交友市场进行深入调研,了解目标用户群体的需求、喜好、习惯以及市场痛点。用户画像…

进程创建:fork函数

fork函数 在Linux系统中&#xff0c;fork函数是用于创建一个新的进程的函数。调用fork函数会创建一个新的进程。 fork函数的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);fork函数没有参数&#xff0c;返回值是一个pid_t类型的值。在成功创建新的进程后…

官方强烈建议更新,关键漏洞影响GitHub Enterprise Server 所有版本

近日&#xff0c;GitHub Bug Bounty 计划报告了一个影响 GitHub Enterprise Server&#xff08;GHES&#xff09;当前所有支持版本的关键漏洞&#xff08;CVE-2024-6800&#xff09;&#xff0c;该漏洞可能允许攻击者获得对该实例内容的无限制访问。目前&#xff0c;漏洞已经解…

Q*算法深度猜想:从Q-learning优化到智能决策

Q*算法深度猜想&#xff1a;从Q-learning优化到智能决策 引言 在强化学习&#xff08;Reinforcement Learning&#xff09;中&#xff0c;Q-learning算法作为一种无模型的学习方法&#xff0c;被广泛应用于解决各种决策优化问题。然而&#xff0c;尽管Q-learning在许多场景下…

docker容器基本命令、docker进入容器的指令、容器的备份、镜像底层原理、使用commit命令制造镜像、将镜像推送到阿里云镜像仓库与私服仓库

除了exit 还有 ctrlpq exit退出停止 ctrlpq 退出不停止 将本地镜像推到阿里云 登入阿里云 容器镜像服务 实力列表 镜像仓库 创建镜像仓库 安装里面步骤来 这里192.168.10.145这部分用自己ifconfig地址

6款ai伪原创软件app,自动生成文章效率更高

在当今信息爆炸的时代&#xff0c;内容创作的需求日益增长。无论是专业的写手、自媒体从业者&#xff0c;还是企业的营销人员&#xff0c;都在不断寻求提高创作效率的方法。而ai伪原创软件app的出现&#xff0c;为创作者们带来了新的解决方案。下面就为大家介绍6个强大的ai伪原…

CICD持续集成持续交付部署

一、CICD概念 1、什么是CI/CD&#xff1f; 通俗来说就是启动一个服务&#xff0c;能够监听代码变化&#xff0c;然后自动执行构建、测试、打包、发布等流程&#xff1b; 2、CI 持续集成 指在开发人员频繁地提交新代码&#xff0c;都会自动执行构建、测试。根据测试结果&…

6.登录功能的开发——获取当前用户、用户退出

登录功能的开发——获取当前用户、用户退出 一、获取当前用户1.1后端处理1.2前端处理 二、用户的退出2.1后端2.2前端 一、获取当前用户 在上一篇文章&#xff0c;我们实现了用户的的登录&#xff0c;但是后续并没有处理完整&#xff0c;比如登录成功后你要跳转回原来的的页面吧…

酷家乐 同盾滑块分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

Linux 软件编程 数据库与网页

sqlite3数据库操作效率&#xff1a; 1.增加事务机制 2.关闭数据库磁盘同步写入 3.使用预处理SQL语句机制实现提升数据库效率 事务机制&#xff1a; 1.可以提高sqlite处理数据的效率 2.确保数据的一致性 关闭数据库中写同步机制&#xff1a; 在…

【GH】【EXCEL】P3: Set Conditional Formatting To Excel Data By Gh

文章目录 conditional formattingdata sourceConditional ScaleConditional Scale Conditional PercentConditional Top Percent Conditional AverageConditional Average Multiple ConditionsConditional BarConditional Bar Conditional UniqueConditional Unique Conditiona…

推荐一个完全自由的目录设计网站

引言 如果我们能通过网站出一本书&#xff0c;这将是一件很酷的事。 事实上&#xff0c;我们通过网站发布知识&#xff0c;最常见的是写博客。 这二者有什么区别呢&#xff1f; 书本的知识内容有很强的逻辑性、系统性。而博客是随心所欲的&#xff0c;一时灵感来了就写一篇…

鸿蒙(API 12 Beta3版)【使用ImagePacker完成图片编码】图片开发指导

图片编码指将PixelMap编码成不同格式的存档图片&#xff08;当前仅支持打包为JPEG、WebP 和 png 格式&#xff09;&#xff0c;用于后续处理&#xff0c;如保存、传输等。 开发步骤 图片编码进文件流 创建图像编码ImagePacker对象。 // 导入相关模块包 import { image } fr…

《计算机操作系统》(第4版)第6章 输入输出系统 复习笔记

第6章 输入输出系统 一、I/O 系统的功能、模型和接口 1.I/O 系统的基本功能 (1)隐藏物理设备的细节。 (2)与设备的无关性。 (3)提高处理机和I/O 设备的利用率。 ( 4 ) 对I/O 设备进行控制。 (5)确保对设备的正确共享。 (6)错误处理。 2.I/O 系统的层次结构和模型 (…

Stability AI发布了单目视频转4D模型的新AI模型:Stable Video 4D

开放生成式人工智能初创公司Stability AI在3月发布了Stable Video 3D&#xff0c;是一款可以根据图像中的物体生成出可旋转的3D模型视频工具。Stability AI在7月24日发布了新一代的Stable Video 4D&#xff0c;增添了赋予3D模移动作的功能。 Stable Video 4D能在约40秒内生成8…

[数据集][目标检测]手钳检测数据集VOC+YOLO格式141张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;141 标注数量(xml文件个数)&#xff1a;141 标注数量(txt文件个数)&#xff1a;141 标注类别…

5G+工业互联网产教融合创新实训室解决方案

一、建设背景 随着第五代移动通信技术&#xff08;5G&#xff09;的快速普及和工业互联网的迅猛发展&#xff0c;全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力&#xff0c;为工业自动化、智能制造等领域带来了革命性的…

访客管理系统 对接微信公众号,发送通知消息

微信公众号模板消息 - 要实现的效果图 1 公众号设置对接的域名 打开【公众号设置】 公众号设置域名&#xff0c;需要先用http server做安全验证。 安全验证成功后&#xff0c;域名配置完毕。 2 获取公众号APPID 和 Secret 3 开通模板消息 官方审核需要2-3日 4 设置IP白名单&…

芯片后端之 PT 使用 report_timing 产生报告 之 -nets 选项

今天,我们再学习一点点 后仿真相关技能。 那就是,了解 report_timing 中的 -nets 选项 。 如果我们仅仅使用如下命令,执行后会发现: pt_shell> report_timing -from FF1/CK -to FF2/d -delay_type max 我们使用命令 report_timing 报出的如上路径延时信息,仅仅显示…

docker yapi安装

概述 YApi 是高效、易用、功能强大的 api 管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API&#xff0c;YApi 还为用户提供了优秀的交互体验&#xff0c;开发人员只需利用平台提供的接口数据写入工具以及简单…