Webpack编译原理详解
创作时间:
作者:
@小白创作中心
Webpack编译原理详解
引用
CSDN
1.
https://blog.csdn.net/qq_36973122/article/details/145433495
Webpack是前端开发中常用的模块打包工具,其编译原理是前端工程师需要掌握的重要知识点。本文将详细介绍Webpack的编译过程,包括初始化、编译和输出三个主要步骤,并通过示意图帮助读者直观理解。
Webpack的作用是将源代码编译(构建、打包)成最终代码。整个过程大致分为三个步骤:
- 初始化
- 编译
- 输出
初始化
此阶段,Webpack会将CLI参数、配置文件、默认配置进行融合,形成一个最终的配置对象。对配置的处理过程是依托一个第三方库yargs完成的。此阶段相对比较简单,主要是为接下来的编译阶段做必要的准备。目前,可以简单的理解为,初始化阶段主要用于产生一个最终的配置。
编译
创建 chunk
chunk是Webpack在内部构建过程中的一个概念,译为“块”,它表示通过某个入口找到的所有依赖的统称。根据入口模块(默认为./src/index.js
)创建一个chunk。每个chunk都至少有两个属性:
- name:默认为main。
- id:唯一编号,开发环境和name相同,生产环境是一个数字,从0开始。
构建所有依赖模块
AST在线测试工具:https://astexplorer.net/
产生 chunk assets
在第二步完成后,chunk会产生一个模块列表,列表中包含了模块id和模块转换后的代码。接下来,Webpack会根据配置为chunk生成一个资源列表,即chunk assets,资源列表可以理解为是生成到最终文件的文件名和文件内容。
chunk hash是根据所有chunk assets的内容生成的一个hash字符串。hash是一种算法,具体有很多分类,特点是将一个任意长度的字符串转换为一个固定长度的字符串,而且可以保证原始内容不变,产生的hash字符串就不变。
合并 chunk assets
将多个chunk的assets合并到一起,并产生一个总的hash。
输出
此步骤非常简单,Webpack将利用Node中的fs模块(文件处理模块),根据编译产生的总的assets,生成相应的文件。
总过程
涉及术语
- module:模块,分割的代码单元,Webpack中的模块可以是任何内容的文件,不仅限于JS。
- chunk:Webpack内部构建模块的块,一个chunk中包含多个模块,这些模块是从入口模块通过依赖分析得来的。
- bundle:chunk构建好模块后会生成chunk的资源清单,清单中的每一项就是一个bundle,可以认为bundle就是最终生成的文件。
- hash:最终的资源清单所有内容联合生成的hash值。
- chunkhash:chunk生成的资源清单内容联合生成的hash值。
- chunkname:chunk的名称,如果没有配置则使用main。
- id:通常指chunk的唯一编号,如果在开发环境下构建,和chunkname相同;如果是生产环境下构建,则使用一个从0开始的数字进行编号。
热门推荐
虾仁炒白菜:简单美味的家常菜与温暖回忆
青春期长痘怎么办?这份“战痘”指南请收好
手机CPU性能参数解读:从核心指标到综合考量
刑事附带民事诉讼的赔偿范围界定
专科学历如何通过继续教育提升竞争力,有哪些可行的途径
采购成本管理方式包括哪些
Excel日期筛选时间段的多种方法
我国水下机器人产业规模持续扩大,2024年产量超5500台/套
中国姓王的人为什么这么多?
维生素B6:您的神经保护伞、心理健康守门员!
项目经理必备:最详细的WBS分解方法、模板和实战案例
项目管理中的工作分解结构(WBS)
2024年抚恤金在离婚后是否仍属于原配偶权益?
退休离世老人抚恤金怎么算?配偶能否领取?分配原则是什么?
驾驶证换领指南:线上、线下办理流程详解
节日的由来和演变 节日风俗及特点
黑色钻石和白色钻石的区别你不懂岂不可惜?
数字赋能考试,打造人才评价新高地
服务器硬盘指示灯闪烁或不亮,是何原因及如何解决?
学业焦虑 | 化解小妙招有一套
更年期失眠用药指南:各类药物特点及注意事项全解析
如何为服务器配置选择合适的显示器?
鬼剃头(斑秃)的治疗方法及症状表现
如何通过音乐来改善情绪?
空城计:从三国到现代的智慧博弈
星币六正位:深入解读其意义与象征
手机号欠费会影响个人征信吗?
Random Click Example
静谧庭院中的冥想之旅:探索心灵深处的宁静
电脑耳机怎么调