【前端工程化面试题】使用 webpack 来优化前端性能/ webpack的功能
这个题目实际上就是来回答 webpack 是干啥的,你对webpack的理解,都是一个问题。
(1)对 webpack 的理解
webpack 为啥提出 + webpack 是啥 + webpack 的主要功能
前端开发通常是基于模块化的,为了提高开发效率,webpack 是一个基于模块的构建工具,是一个用于 js 应用程序的静态模块打包工具。
Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,它能够将多个 JavaScript 文件打包成一个或多个文件,以及将各种资源(如样式表、图片等)转换成代码。通过合理配置,可以借助 Webpack 来优化前端性能。以下是一些优化前端性能的常见方法:
静态模块是指开发阶段,可以被 webpack 引用的资源
(2)webpack 的主要功能有
- 模块打包:webpack 将项目中的各种模块、文件,以及它们之间的依赖关系打包成静态资源文件,供浏览器使用
- 加载器【loader】:webpack 支持使用加载器来处理非js文件,如将es6/7代码转换成es5【babel-loader】、处理css 前缀【postcss-loader】等
- 插件系统【plugin】:webpack 有丰富的插件系统,可以实现代码压缩、文件合并、代码分割、资源优化等功能。
- 开发服务器:webpack 提供开发服务器,在开发过程中提供实时的热更新功能
- 自动化构建:可以通过配置文件来定义构建任务,实现自动化构建。
- 支持多种模块化规范:cjs、amd、es6
- 代码优化:使用插件可以实现代码压缩、去除无用代码、提取公共代码等
(3)webpack 优化性能
重点,webpack 的这些优化
- 都下载配置文件的 optimization 属性中
- 都使用插件 plugin 进行优化,处理压缩图片使用的是loader
- 代码拆分:webpack 支持将代码分成多个 bundle,使应用程序可以按需加载,或并行加载这些文件,提高页面加载速度
- 使用 【splitChunksPlugin】,该插件webpack 已经默认安装和集成,可以直接配置使用
- 内联 chunk
- 使用【inline-chunk-html-plugin】插件将一些 chunk 的模块内联到 html
- 懒加载:结合代码分割,可以将不同页面或组件的代码分割成独立的文件,按需加在,减少初始化加载时间,提升页面响应速度。
- 代码压缩 :js/css/html 代码都
- 【terser-webpack-plugin】 js 压缩丑化js
- 【css-minimizer-webpack-plugin】css,去除无用空格等
- 【html-webpack-plugin】html,配置minify 属性,实际会使用另一个插件
html-minifier-terse
- 文件大小压缩:对文件大小进行压缩,减少 http 传输中的宽带损耗
- 图片压缩:使用【image-webpack-loader】注意这个是 loader
- 对js/css等压缩:使用【compression-webpack-plugin】
- Tree Shaking: 特性来剔除未使用的代码,减少打包后文件的大小
- js 的有两种方案
- usedExports:true,通过标记某些函数是否被使用,之后通过 terser /ˈtersər/ 来进行优化【这个terser 就是上面上到的压缩js的插件terser-webpack-plugin】
- sideEffects: false,跳过整个模块/文件,直接查看该文件是否有副作用
- css Tree Shaking: 使用【purgecss-plugin-webpack】
- js 的有两种方案
相关文章:
【前端工程化面试题】使用 webpack 来优化前端性能/ webpack的功能
这个题目实际上就是来回答 webpack 是干啥的,你对webpack的理解,都是一个问题。 (1)对 webpack 的理解 webpack 为啥提出 webpack 是啥 webpack 的主要功能 前端开发通常是基于模块化的,为了提高开发效率࿰…...
思迈特再获国家权威认证:代码自主率98.78%
日前,思迈特软件自主研发的商业智能与数据分析软件(Smartbi Insight)通过中国赛宝实验室(工业和信息化部电子第五研究所)代码扫描测试,Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩…...
JavaScript排序
直接看代码 <table border"1" cellspacing"0"><thead class"tou"><tr><td>选择按钮</td><td>汽车编号</td><td>汽车图片</td><td>汽车系列名称</td><td>汽车能源</…...
【读书笔记】ICS设备及应用攻击(一)
工控系统通常是由互联设备所构成的大型复杂系统,这些设备包括类似于人机界面(HMI)、PLC、传感器、执行器以及其他使用协商好的协议进行相互通信的设备。所有交互背后的驱动力都是软件,软件为工控系统中几乎所有部分的运行提供支撑…...
网络原理(HTTP篇)
网络原理HTTP 前言HTTPHTTP的工作流程抓包工具抓取HTTP报文HTTP报文格式 请求报文具体细节首行URLURL的基本格式URL encode 方法 报头(header)HostContent-Length 和 Content-TypeUser-Agent(UA)RefererCookie(重要) 前言 如图&a…...
关于油封密封件你了解多少?
油封也称为轴封或旋转轴封,旨在防止设备中的润滑剂泄漏,并防止外部污染物进入机械。它们通常用于泵和电机等旋转设备,在固定部件和移动部件之间提供密封界面。 油封的有效性很大程度上取决于其材料。不同的材料具有不同程度的耐热性、耐压性…...
Leetcode 72 编辑距离
题意理解: 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 将word1转换为word2,可以进行三种操作:增、删、改&am…...
羊大师揭秘,如何挑选出好牧场的奶羊,该怎么看
羊大师揭秘,如何挑选出好牧场的奶羊,该怎么看 了解牧场的管理和环境:好的牧场应该有规范的管理制度,环境整洁,草场茂盛,为奶羊提供了充足的食物和良好的生活环境。在这样的牧场中,奶羊能够得到…...
MySQL数据库基础(八):DML数据操作语言
文章目录 DML数据操作语言 一、DML包括哪些SQL语句 二、数据的增删改(重点) 1、数据的增加操作 2、数据的修改操作 3、数据的删除操作 DML数据操作语言 一、DML包括哪些SQL语句 insert插入、update更新、delete删除 二、数据的增删改(…...
(09)Hive——CTE 公共表达式
目录 1.语法 2. 使用场景 select语句 chaining CTEs 链式 union语句 insert into 语句 create table as 语句 前言 Common Table Expressions(CTE):公共表达式是一个临时的结果集,该结果集是从with子句中指定的查询派生而来…...
Spring 用法学习总结(四)之 JdbcTemplate 连接数据库
🐉目录 9 JdbcTemplate 9 JdbcTemplate Spring 框架对 JDBC 进行了封装,使用 JdbcTemplate 方便实现对数据库操作 相关包: 百度网盘链接https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd6666 创建properties配置文件 💥注意…...
第 385 场 LeetCode 周赛题解
A 统计前后缀下标对 I 模拟 class Solution { public:int countPrefixSuffixPairs(vector<string> &words) {int n words.size();int res 0;for (int i 0; i < n; i)for (int j i 1; j < n; j)if (words[i].size() < words[j].size()) {int li words[…...
什么是RabbitMQ?
一、引言 RabbitMQ是一个开源的消息代理软件,用于在分布式系统中传递消息。它实现了高级消息队列协议(AMQP),提供了一种可靠的、强大的、灵活的消息传递机制,使得不同应用程序或组件之间可以轻松地进行通信。 二、概念…...
JWT登录验证前后端设计与实现笔记
设计内容 前端 配置全局前置路由守卫axios拦截器登录页面和主页 后端 JWT的封装登录接口中间件放行mysql数据库的连接 详细设计 路由设计 配置全局前置守卫,如果访问的是登录页面则放行,不是则进入判断是否有token,没有则拦截回到登录…...
自定义类型详解 ----结构体,位段,枚举,联合
目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段? 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合(共同体) 1.联合体类型的声明以…...
VueCLI核心知识综合案例TodoList
目录 1 拿到一个功能模块首先需要拆分组件: 2 使用组件实现静态页面的效果 3 分析数据保存在哪个组件 4 实现添加数据 5 实现复选框勾选 6 实现数据的删除 7 实现底部组件中数据的统计 8 实现勾选全部的小复选框来实现大复选框的勾选 9 实现勾选大复选框来…...
关于cuda路径问题
问题:Could not load dynamic library ‘libcudart.so.11.0’ 原因:调用系统环境下的cuda但系统环境没有装cuda 解决: 1.在系统环境装cuda,但如果每权限就不好操作; 2.用虚拟环境装好的cuda路径丢给环境变量 暂时性&am…...
六、Spring/Spring Boot整合ActiveMQ
Spring/Spring Boot整合ActiveMQ 一、Spring整合ActiveMQ1.pom.xml2.Queue - 队列2.1 applicationContext.xml2.2 生产者2.3 消费者 3.Topic - 主题3.1 applicationContext.xml3.2 生产者3.3 消费者 4.消费者 - 监听器4.1 编写监听器类4.2 配置监听器4.3 生产者消费者一体 二、…...
树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务
树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务 前提:本文基于Ubuntu,Java8,SpringBoot 2.6.13讲解 准备工作 准备SpringBoot/SpringCloud项目jar包 用 maven 打包springBoot/springCloud项目&…...
数据库设计、JDBC、数据库连接池
数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…...
新手首次使用 Taotoken 从注册到完成第一个 API 调用的完整指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 新手首次使用 Taotoken 从注册到完成第一个 API 调用的完整指南 本文旨在为初次接触 Taotoken 的开发者提供一份清晰的入门指引。我…...
VS Code CircuitPython扩展实战:嵌入式开发环境搭建与高效调试指南
1. 项目概述:为什么选择 VS Code CircuitPython 扩展?如果你正在玩像 Adafruit Feather、Raspberry Pi Pico 或者 ESP32-S3 这类支持 CircuitPython 的开发板,你可能已经习惯了在CIRCUITPY这个神奇的U盘里直接编辑code.py文件。这种方式简单…...
【NS-3实战指南】NetAnim可视化调试与网络拓扑分析
1. NetAnim入门:从安装到第一个动画 第一次接触NS-3仿真的人往往会被命令行输出的数字搞得头晕眼花。记得我刚开始做无线网络仿真时,盯着终端里不断跳动的数据包统计数字,完全想象不出节点之间到底是怎么通信的。直到发现了NetAnim这个神器&a…...
HLK-V20语音模块的智能家居实战:如何用STM32控制灯、电机并连接ESP8266上云
HLK-V20语音模块的智能家居实战:STM32联动控制与云端接入全解析 在智能家居DIY领域,语音控制早已从概念走向现实。HLK-V20作为一款高性价比的纯离线语音识别模块,配合STM32的丰富外设控制能力,可以构建出响应迅速、隐私安全的本地…...
生物 --- 免疫力
1、免疫的概念免疫是人体的一种生理功能。识别“自己”和“非己”。破坏和排斥进入人体内的抗原物质,如病原体。指机体识别和清除外来入侵抗原及体内突变或衰老细胞,并维持自身内环境稳定的生理功能。2、免疫系统的构成免疫系统主要由免疫器官、免疫细胞…...
PPTX判断包含图表id
PPTX判断包含图表id ############################20250915判断是否包含图表################################################## i0 for shape in prs.slides[1].shapes:if shape.HasChart:print(fi:{i}包含图表)ii1 ############################20250915判断是否包含图表##…...
C51可重入函数原理与实践指南
1. 理解C51中的可重入函数概念 在8051单片机开发中,可重入函数(Reentrant Function)是一个关键但常被误解的概念。与通用计算机上的C语言开发不同,由于8051架构的特殊限制,标准C51函数默认都是不可重入的。这源于8051硬件设计的几个固有特点&…...
【BUUCTF】【WEB】ReadlezPHP
考点:打开题目,发现页面有点阴森:右键没有任何反应,那就右上角三个点:更多工具->开发者工具OK没有任何线索,那就用bp看看。拉倒最下面,发现右下角一个文件./time.php?source这可能是一个线索…...
3个关键步骤解锁Switch隐藏功能:TegraRcmGUI图形化注入工具完整指南
3个关键步骤解锁Switch隐藏功能:TegraRcmGUI图形化注入工具完整指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 想为你的Nintendo Switch解锁…...
Ti AWR2243实测:毫米波雷达通道积累,选相干还是非相干?一个实验讲清楚
Ti AWR2243毫米波雷达通道积累策略:工程实践中的深度抉择 毫米波雷达在现代自动驾驶系统中扮演着关键角色,而通道积累策略的选择直接影响着目标检测的精度与系统实时性。面对192个虚拟通道的海量数据,工程师们常常陷入两难:是追求…...
