IT评测·应用市场-qidao123.com

标题: Webpack 知识点整理 [打印本页]

作者: 饭宝    时间: 2025-3-16 18:00
标题: Webpack 知识点整理

1. 对 webpack 的理解?办理了什么问题?

Webpack 是前端工程化领域的核心工具,其核心定位是模块打包器(Module Bundler),通过将各类资源(JS、CSS、图片等)视为模块并进行智能整合,办理了传统前端开发中的多维度问题
办理问题:
1. 模块化开发与依靠管理

2. 多范例资源整合

3.性能优化与工程化

4.开发体验提升

2. webpack 构建流程?

Webpack 的构建流程可分为 三大阶段,涵盖 10+ 关键步骤
3. Webpack 中常见的 Loader ?办理了什么问题?

Loader 是 Webpack 的核心模块处置惩罚器,用于将非 Javascript 文件(如 css、图片、字体等)转换为 Webpack 可识别的有效模块,办理如下关键问题:
4. Webpack 中常见的 Plugin ? 办理了什么问题?

Plugin 通过【基于tapable】扩展构建流程的生命周期钩子,办理了以下核心问题:
- 自动化资源管理:如 HTML 天生、CSS提取、静态文件复制等;
- 性能优化: 代码压缩、分包、缓存控制
- 开发体验增强:环境变量注入、构建进度反馈
- 深度分析:可视化报告辅助优化决策
赋予 Webpack 各种机动的功能,例如打包优化、资源管理、环境变量注入等,他们会运行在 Webpack 的不同阶段(钩子/ 生命周期),贯穿了 webpack 整个编译周期,目的在于办理 loader 无法实现的其他事。
Plugin 本质是一个类。
5. Webpack 说说 Loader 和 Plugin 的区别? 编写 Loader 、Plugin 思路?

Loader

编写思路:

6. Webpack 的热更新是怎样做到的? 原理是什么?

HMR ( Hot Module Replacement )
原理:
通过 webpack-dev-server 创建两个服务器: 提供静态资源的服务( Express )和 Socket 服务
Express server 负责直接提供静态资源的服务 ( 打包后资源直接被浏览器哀求和分析)
Socket server 是一个 websocket 的长连接,双方可以互相通信
当 socket server监听到对应的模块发生变化时,会天生两个文件 .json ( manifest 文件 ) 和 .js ( unpdate chunk )
通过长连接,socket server 可以直接将这两个文件主动发送给客户端 ( 浏览器)
浏览器拿到两个新的文件后,通过 HMR runtime 机制,加载这两个文件,并且针对修改的模块进行更新
7. Webpack proxy 工作原理? 为什么能跨域?

proxy 工作原理: 实质利用 http-proxy-middleware 这个 http 代理中间件,实现哀求转发给其他服务器
跨域:( 服务器和服务器之间哀求数据并不会存在跨域行为,跨域行为是浏览器安全策略限制 )
在开发阶段, webpack-dev-server 会启动一个本地开发服务器,所以我们的应用在开发阶段是独立运行在 localhost 的一个端口上,而后端服务器有事运行在另外一个地址上。所以在开发阶段中,由于浏览器同源策略的缘故原由,当本地访问后端就会出现跨域哀求。
办理跨域: 当本地发送哀求的时候,代理服务器相应该哀求,并将哀求转发到目标服务器上,目标服务器相应数据后再将数据返回给代理服务器,最终再由代理服务器将数据相应给本地。
8. 怎样借助 Webpack 来优化前端性能

优化方向核心策略工具/配置代码体积Tree Shaking、代码分割、压缩TerserPlugin、SplitChunks加载性能懒加载、CDN、预加载import()、externals、preload构建服从缓存、多进程、Webpack 5 升级cache: filesystem、thread-loader长期缓存Content Hash、文件系统缓存[contenthash]、Webpack 5 缓存配置 9.怎样提高 Webpack 的构建速率?

主要可以从优化搜索时间、缩小文件搜索范围、减少不须要的编译等方面入手
优化 loader 配置 ( 通过配置 include、exclude、test属性来匹配文 )
公道使用 resolve.extensions
优化 resolve.modules ( 第三方模块的绝对路径,以减少探求 )
优化 resolve.alias ( alias给一些常用的路径起一个别名,例如:@)
使用 DLLPlugin 插件
使用 cache-loader
terser 启动多线程
公道使用 sourceMap
10. 与 Webpack 类似的工具还有哪些

Rollup ( Vue、React 和 Three.js )
Parcel ( 零配置、傻瓜式 )
Snowpack ( 闪电般快速,较为复杂、Webpack 和 Parcel 的替换方案)
Webpack 的上风:
智能分析: 对 CommonJS、AMD、ES6 的语法做了兼容
万物模块: 对 js、css、图片等资源文件都支持打包
开箱即用: 集成 HRM、Tree-Shaking 等功能
代码分割: 可以将代码切割成不同的 chunk,实现按需加载,降低了初始化时间
插件系统: 具有强大的 Plugin 接口,具有更好的机动性和扩展性
易于调试:支持 ScoureUrls 和 ScoureMap
快速运行: Webpack 使用异步 IO 并具有多级缓存,这使得 Webpack 很快且在增量编译上更加速
生态环境好:社区更丰富,出现问题更轻易办理
11. webpack 常用字段

main:定义了 npm 包的入口文件
mudule: 定义了 npm 包的 ESM 规范的入口文件
browser: 定义了 npm 包在 browser 环境下的入口文件
12. Webpack 常用插件



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4