《Webpack实战:入门、进阶与调优(第2版)》是由机械工业出版社出版的一本关于Webpack方面的书籍,作者是居玉皓,主要介绍了关于Webpack实战、Webpack入门、Webpack进阶、Webpack调优方面的知识内容,目前在Webpack类书籍综合评分为:7.7分。
书籍介绍
编辑推荐
(1)作者背景资深:作者是资深前端技术专家,Webpack技术布道者,美国*大免费流媒体播放平台前端专家,知名开源打包工具YKit主导者和核心开发者。
(2)4维度全面展开:从功能特性、工作原理、性能优化、项目实战4个维度全面展开,提供示例代码。
(3)第1版广受好评:第1版豆瓣评分8.6,和当当好评率近99.9%,是前端领域的畅销书,被读者公认为是Webpack领域的标准性著作。
内容简介
这是一本讲解如何使用Webpack构建现代Web应用的著作。第1版豆瓣评分8.6,和当当好评率近99.9%,是前端领域的畅销书,被读者公认为是Webpack领域的标准性著作。
全书围绕Webpack的功能特性、工作原理、性能优化、项目实战4个维度全面展开,从基本的使用场景到复杂的应用实例,再到系统性的优化,由浅入深讲解Webpack的各个特性,同时剖析其背后的工作原理,让读者能零基础快速掌握Webpack并轻松实现进阶。
作者是资深的前端技术专家,是知名开源打包工具YKit的主导者和核心开发者,也是Webpack坚定不移的布道者。本书内容全部来自作者的实战经验,尽量避开了网络上已经发表的各种公开资料,思路简洁、深入,原理与实操并重。
与第1版相比,第2版做了如下更新:
(1)结合WebpackZ新的技术,对全书内容进行了全面更新;
(2)收集并分析了读者对第1版的反馈,完善了第1版的不足之处;
(3)新增了分析Webpack打包原理的章节;
(4)新增了2个关于React和Vue的综合案例。
相比第1版,第2版内容更新、更全、更深入,实战性更强。
目录
- 前言
- 第1章Webpack简介1
- 1.1何为Webpack1
- 1.2为什么需要Webpack2
- 1.2.1何为模块2
- 1.2.2JavaScript中的模块3
- 1.2.3模块打包工具4
- 1.2.4为什么选择Webpack5
- 1.3安装5
- 1.4打包个应用7
- 1.4.1HelloWorld7
- 1.4.2使用npmscripts9
- 1.4.3使用默认目录配置10
- 1.4.4使用配置文件10
- 1.4.5webpack-dev-server13
- 1.5本章小结15
- 第2章模块打包17
- 2.1CommonJS17
- 2.1.1模块18
- 2.1.2导出18
- 2.1.3导入20
- 2.2ES6Module22
- 2.2.1模块22
- 2.2.2导出23
- 2.2.3导入24
- 2.2.4复合写法26
- 2.3CommonJS与ES6Module的区别26
- 2.3.1动态与静态26
- 2.3.2值复制与动态映射27
- 2.3.3循环依赖29
- 2.4加载其他类型的模块33
- 2.4.1非模块化文件34
- 2.4.2AMD34
- 2.4.3UMD35
- 2.4.4加载npm模块37
- 2.5模块打包原理38
- 2.6本章小结41
- 第3章资源的输入和输出42
- 3.1资源处理流程42
- 3.2配置资源入口44
- 3.2.1context44
- 3.2.2entry45
- 3.2.3实例47
- 3.3配置资源出口50
- 3.3.1filename50
- 3.3.2path53
- 3.3.3publicPath54
- 3.3.4实例56
- 3.4本章小结57
- 第4章预处理器59
- 4.1一切皆模块59
- 4.2loader概述61
- 4.3loader的配置63
- 4.3.1loader的引入63
- 4.3.2链式loader65
- 4.3.3loaderoptions65
- 4.3.4更多配置66
- 4.4常用loader介绍70
- 4.4.1babel-loader70
- 4.4.2ts-loader72
- 4.4.3html-loader73
- 4.4.4handlebars-loader73
- 4.4.5file-loader74
- 4.4.6url-loader77
- 4.5自定义loader78
- 4.6本章小结82
- 第5章样式处理83
- 5.1分离样式文件83
- 5.1.1extract-text-webpack-plugin84
- 5.1.2多样式文件的处理86
- 5.1.3mini-css-extract-plugin88
- 5.2样式预处理90
- 5.2.1Sass与SCSS90
- 5.2.2Less92
- 5.3PostCSS93
- 5.3.1PostCSS与Webpack93
- 5.3.2自动前缀94
- 5.3.3stylelint95
- 5.3.4CSSNext96
- 5.4CSSModules98
- 5.5本章小结99
- 第6章代码分片100
- 6.1通过入口划分代码100
- 6.2CommonsChunkPlugin101
- 6.2.1提取vendor104
- 6.2.2设置提取范围105
- 6.2.3设置提取规则106
- 6.2.4hash与长效缓存108
- 6.2.5CommonsChunkPlugin的不足110
- 6.3optimization.SplitChunks111
- 6.3.1从命令式到声明式113
- 6.3.2默认的异步提取114
- 6.3.3配置115
- 6.4资源异步加载116
- 6.4.1import()116
- 6.4.2异步chunk的配置119
- 6.5本章小结120
- 第7章生产环境配置121
- 7.1环境配置的封装121
- 7.2开启production模式123
- 7.3环境变量124
- 7.4source-map125
- 7.4.1source-map原理125
- 7.4.2source-map配置126
- 7.4.3source-map安全128
- 7.5资源压缩129
- 7.5.1压缩JavaScript129
- 7.5.2压缩CSS131
- 7.6缓存132
- 7.6.1资源hash132
- 7.6.2输出动态HTML133
- 7.6.3使chunkid更稳定135
- 7.7bundle体积监控和分析137
- 7.8本章小结139
- 第8章打包优化140
- 8.1HappyPack140
- 8.1.1工作原理141
- 8.1.2单个loader的优化141
- 8.1.3多个loader的优化143
- 8.2缩小打包作用域144
- 8.2.1exclude和include144
- 8.2.2noParse145
- 8.2.3IgnorePlugin146
- 8.2.4缓存146
- 8.3动态链接库与DllPlugin148
- 8.3.1vendor配置149
- 8.3.2vendor打包150
- 8.3.3链接到业务代码151
- 8.3.4潜在问题151
- 8.4去除死代码153
- 8.4.1ES6Module154
- 8.4.2使用Webpack进行依赖关系构建154
- 8.4.3使用压缩工具去除死代码155
- 8.5本章小结155
- 第9章开发环境调优156
- 9.1Webpack开发效率插件156
- 9.1.1webpack-dashboard156
- 9.1.2webpack-merge158
- 9.1.3speed-measure-webpack-plugin161
- 9.1.4size-plugin161
- 9.2模块热替换163
- 9.2.1开启HMR163
- 9.2.2HMR原理165
- 9.2.3HMRAPI示例167
- 9.3本章小结169
- 第10章Webpack打包机制170
- 10.1总览170
- 10.2准备工作171
- 10.3缓存加载173
- 10.4模块打包176
- 10.4.1Compiler176
- 10.4.2Compilation178
- 10.4.3Resolver179
- 10.4.4ModuleFactory180
- 10.4.5Parser181
- 10.4.6模板渲染183
- 10.5深入Webpack插件184
- 10.5.1Tapable185
- 10.5.2插件的协同模式187
- 10.6本章小结191
- 第11章实战案例192
- 11.1React应用192
- 11.1.1基础配置192
- 11.1.2JavaScript处理195
- 11.1.3TypeScript处理197
- 11.1.4样式处理199
- 11.1.5静态资源201
- 11.1.6多页应用公共代码优化202
- 11.1.7长效缓存205
- 11.2Vue应用206
- 11.2.1手动搭建Vue项目206
- 11.2.2通过@vue/cli搭建项目212
- 11.3本章小结214
- 第12章更多JavaScript打包工具215
- 12.1Rollup215
- 12.1.1配置216
- 12.1.2Rollup去除死代码217
- 12.1.3可选的输出格式218
- 12.1.4使用Rollup构建JavaScript库219
- 12.2Parcel219
- 12.2.1打包速度220
- 12.2.2零配置222
- 12.3esbuild224
- 12.3.1打包速度2