内容简介 · · · · · ·
这是一本能指导读者零基础快速掌握Webpack并轻松进阶的实战性著作。
作者是资深的前端工程师,在Webpack领域有深厚的积累,是知名开源打包工具YKit的主导者和核心开发者。本书从功能特性、工作原理、应用实践、性能优化4个维度对Webpack进行了全面的讲解,内容上尽力避免了网络上已经公开发表的各种资料和文档,而是从作者的实际经验出发,将更有价值的内容呈现给读者,尽量帮助读者少走弯路。
全书一共10章:
第1章是一个快速的指引,介绍了Webpack的概念、适用场景、开发环境搭建,以及如何快速上手。
第2~7章详细讲解了Webpack的各项功能特性及其工作原理,同时讲解了它们的适用场景,以及如何付诸实践。
第8~9章深入总结了打包的性能优化和开发环境的优化。
第10章介绍了其他打包工具并对这些工具进行了各项特性的对比。
在线试读:
作者简介 · · · · · ·
居玉皓
资深前端开发工程师,目前就职于美国在线流媒体平台Tubi TV,曾就职于去哪儿网,负责前端基础架构的建设,并主导开发了知名的开源打包工具YKit。
长期专注于前端构建领域,对Webpack有深入的研究,积累了丰富的实践经验,在国内为Webpack的发展和普及做了较多的努力和贡献。
目录 · · · · · ·
前言
第1章 Webpack简介1
1.1 何为Webpack1
1.2 为什么需要Webpack2
1.2.1 何为模块2
1.2.2 JavaScript中的模块3
· · · · · · (更多)
第1章 Webpack简介1
1.1 何为Webpack1
1.2 为什么需要Webpack2
1.2.1 何为模块2
1.2.2 JavaScript中的模块3
· · · · · · (更多)
前言
第1章 Webpack简介1
1.1 何为Webpack1
1.2 为什么需要Webpack2
1.2.1 何为模块2
1.2.2 JavaScript中的模块3
1.2.3 模块打包工具4
1.2.4 为什么选择Webpack5
1.3 安装5
1.4 打包第一个应用7
1.4.1 Hello World7
1.4.2 使用npm scripts9
1.4.3 使用默认目录配置10
1.4.4 使用配置文件10
1.4.5 webpack-dev-server13
1.5 本章小结15
第2章 模块打包17
2.1 CommonJS17
2.1.1 模块18
2.1.2 导出18
2.1.3 导入20
2.2 ES6 Module22
2.2.1 模块22
2.2.2 导出23
2.2.3 导入24
2.2.4 复合写法26
2.3 CommonJS与ES6 Module的区别26
2.3.1 动态与静态26
2.3.2 值拷贝与动态映射27
2.3.3 循环依赖29
2.4 加载其他类型模块33
2.4.1 非模块化文件34
2.4.2 AMD34
2.4.3 UMD35
2.4.4 加载npm模块37
2.5 模块打包原理38
2.6 本章小结41
第3章 资源输入输出42
3.1 资源处理流程42
3.2 配置资源入口44
3.2.1 context44
3.2.2 entry45
3.2.3 实例47
3.3 配置资源出口50
3.3.1 filename50
3.3.2 path53
3.3.3 publicPath54
3.3.4 实例56
3.4 本章小结57
第4章 预处理器59
4.1 一切皆模块59
4.2 loader概述61
4.3 loader的配置63
4.3.1 loader的引入63
4.3.2 链式loader65
4.3.3 loader options65
4.3.4 更多配置66
4.4 常用loader介绍70
4.4.1 babel-loader70
4.4.2 ts-loader72
4.4.3 html-loader73
4.4.4 handlebars-loader73
4.4.5 file-loader74
4.4.6 url-loader76
4.4.7 vue-loader77
4.5 自定义loader78
4.6 本章小结82
第5章 样式处理84
5.1 分离样式文件84
5.1.1 extract-text-webpack-plugin85
5.1.2 多样式文件的处理87
5.1.3 mini-css-extract-plugin89
5.2 样式预处理91
5.2.1 Sass与SCSS91
5.2.2 Less93
5.3 PostCSS94
5.3.1 PostCSS与Webpack94
5.3.2 自动前缀95
5.3.3 stylelint96
5.3.4 CSSNext98
5.4 CSS Modules99
5.5 本章小结100
第6章 代码分片101
6.1 通过入口划分代码101
6.2 CommonsChunkPlugin102
6.2.1 提取vendor105
6.2.2 设置提取范围106
6.2.3 设置提取规则107
6.2.4 hash与长效缓存109
6.2.5 CommonsChunkPlugin的不足111
6.3 optimization.SplitChunks112
6.3.1 从命令式到声明式114
6.3.2 默认的异步提取115
6.3.3 配置116
6.4 资源异步加载117
6.4.1 import()118
6.4.2 异步chunk的配置120
6.5 本章小结121
第7章 生产环境配置122
7.1 环境配置的封装122
7.2 开启production模式124
7.3 环境变量125
7.4 source map126
7.4.1 原理126
7.4.2 source map配置127
7.4.3 安全129
7.5 资源压缩130
7.5.1 压缩JavaScript130
7.5.2 压缩CSS132
7.6 缓存133
7.6.1 资源hash133
7.6.2 输出动态HTML134
7.6.3 使chunk id更稳定136
7.7 bundle体积监控和分析138
7.8 本章小结140
第8章 打包优化141
8.1 HappyPack141
8.1.1 工作原理142
8.1.2 单个loader的优化142
8.1.3 多个loader的优化144
8.2 缩小打包作用域145
8.2.1 exclude和include145
8.2.2 noParse146
8.2.3 IgnorePlugin146
8.2.4 Cache147
8.3 动态链接库与DllPlugin147
8.3.1 vendor配置148
8.3.2 vendor打包149
8.3.3 链接到业务代码150
8.3.4 潜在问题151
8.4 tree shaking152
8.4.1 ES6 Module153
8.4.2 使用Webpack进行依赖关系构建153
8.4.3 使用压缩工具去除死代码154
8.5 本章小结154
第9章 开发环境调优155
9.1 Webpack开发效率插件155
9.1.1 webpack-dashboard155
9.1.2 webpack-merge157
9.1.3 speed-measure-webpack-plugin160
9.1.4 size-plugin160
9.2 模块热替换162
9.2.1 开启HMR162
9.2.2 HMR原理164
9.2.3 HMR API示例166
9.3 本章小结168
第10章 更多JavaScript打包工具169
10.1 Rollup169
10.1.1 配置170
10.1.2 tree shaking171
10.1.3 可选的输出格式172
10.1.4 使用Rollup构建JavaScript库173
10.2 Parcel173
10.2.1 打包速度174
10.2.2 零配置176
10.3 打包工具的发展趋势178
10.3.1 性能与通用性178
10.3.2 配置极小化与工程标准化178
10.3.3 WebAssembly179
10.4 本章小结180
· · · · · · (收起)
第1章 Webpack简介1
1.1 何为Webpack1
1.2 为什么需要Webpack2
1.2.1 何为模块2
1.2.2 JavaScript中的模块3
1.2.3 模块打包工具4
1.2.4 为什么选择Webpack5
1.3 安装5
1.4 打包第一个应用7
1.4.1 Hello World7
1.4.2 使用npm scripts9
1.4.3 使用默认目录配置10
1.4.4 使用配置文件10
1.4.5 webpack-dev-server13
1.5 本章小结15
第2章 模块打包17
2.1 CommonJS17
2.1.1 模块18
2.1.2 导出18
2.1.3 导入20
2.2 ES6 Module22
2.2.1 模块22
2.2.2 导出23
2.2.3 导入24
2.2.4 复合写法26
2.3 CommonJS与ES6 Module的区别26
2.3.1 动态与静态26
2.3.2 值拷贝与动态映射27
2.3.3 循环依赖29
2.4 加载其他类型模块33
2.4.1 非模块化文件34
2.4.2 AMD34
2.4.3 UMD35
2.4.4 加载npm模块37
2.5 模块打包原理38
2.6 本章小结41
第3章 资源输入输出42
3.1 资源处理流程42
3.2 配置资源入口44
3.2.1 context44
3.2.2 entry45
3.2.3 实例47
3.3 配置资源出口50
3.3.1 filename50
3.3.2 path53
3.3.3 publicPath54
3.3.4 实例56
3.4 本章小结57
第4章 预处理器59
4.1 一切皆模块59
4.2 loader概述61
4.3 loader的配置63
4.3.1 loader的引入63
4.3.2 链式loader65
4.3.3 loader options65
4.3.4 更多配置66
4.4 常用loader介绍70
4.4.1 babel-loader70
4.4.2 ts-loader72
4.4.3 html-loader73
4.4.4 handlebars-loader73
4.4.5 file-loader74
4.4.6 url-loader76
4.4.7 vue-loader77
4.5 自定义loader78
4.6 本章小结82
第5章 样式处理84
5.1 分离样式文件84
5.1.1 extract-text-webpack-plugin85
5.1.2 多样式文件的处理87
5.1.3 mini-css-extract-plugin89
5.2 样式预处理91
5.2.1 Sass与SCSS91
5.2.2 Less93
5.3 PostCSS94
5.3.1 PostCSS与Webpack94
5.3.2 自动前缀95
5.3.3 stylelint96
5.3.4 CSSNext98
5.4 CSS Modules99
5.5 本章小结100
第6章 代码分片101
6.1 通过入口划分代码101
6.2 CommonsChunkPlugin102
6.2.1 提取vendor105
6.2.2 设置提取范围106
6.2.3 设置提取规则107
6.2.4 hash与长效缓存109
6.2.5 CommonsChunkPlugin的不足111
6.3 optimization.SplitChunks112
6.3.1 从命令式到声明式114
6.3.2 默认的异步提取115
6.3.3 配置116
6.4 资源异步加载117
6.4.1 import()118
6.4.2 异步chunk的配置120
6.5 本章小结121
第7章 生产环境配置122
7.1 环境配置的封装122
7.2 开启production模式124
7.3 环境变量125
7.4 source map126
7.4.1 原理126
7.4.2 source map配置127
7.4.3 安全129
7.5 资源压缩130
7.5.1 压缩JavaScript130
7.5.2 压缩CSS132
7.6 缓存133
7.6.1 资源hash133
7.6.2 输出动态HTML134
7.6.3 使chunk id更稳定136
7.7 bundle体积监控和分析138
7.8 本章小结140
第8章 打包优化141
8.1 HappyPack141
8.1.1 工作原理142
8.1.2 单个loader的优化142
8.1.3 多个loader的优化144
8.2 缩小打包作用域145
8.2.1 exclude和include145
8.2.2 noParse146
8.2.3 IgnorePlugin146
8.2.4 Cache147
8.3 动态链接库与DllPlugin147
8.3.1 vendor配置148
8.3.2 vendor打包149
8.3.3 链接到业务代码150
8.3.4 潜在问题151
8.4 tree shaking152
8.4.1 ES6 Module153
8.4.2 使用Webpack进行依赖关系构建153
8.4.3 使用压缩工具去除死代码154
8.5 本章小结154
第9章 开发环境调优155
9.1 Webpack开发效率插件155
9.1.1 webpack-dashboard155
9.1.2 webpack-merge157
9.1.3 speed-measure-webpack-plugin160
9.1.4 size-plugin160
9.2 模块热替换162
9.2.1 开启HMR162
9.2.2 HMR原理164
9.2.3 HMR API示例166
9.3 本章小结168
第10章 更多JavaScript打包工具169
10.1 Rollup169
10.1.1 配置170
10.1.2 tree shaking171
10.1.3 可选的输出格式172
10.1.4 使用Rollup构建JavaScript库173
10.2 Parcel173
10.2.1 打包速度174
10.2.2 零配置176
10.3 打包工具的发展趋势178
10.3.1 性能与通用性178
10.3.2 配置极小化与工程标准化178
10.3.3 WebAssembly179
10.4 本章小结180
· · · · · · (收起)
丛书信息
Web开发技术丛书 (共34册),
这套丛书还有
《内容即未来》,《WebRTC音视频实时互动技术》,《Koa开发》,《HTML 5与CSS 3权威指南(第4版·上册)》,《JavaScript编程精解(第2版)》 等。
喜欢读"Webpack实战:入门、进阶与调优"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"Webpack实战:入门、进阶与调优"的人也喜欢 · · · · · ·
Webpack实战:入门、进阶与调优的话题 · · · · · · ( 全部 条 )

什么是话题
无论是一部作品、一个人,还是一件事,都往往可以衍生出许多不同的话题。将这些话题细分出来,分别进行讨论,会有更多收获。


Webpack实战:入门、进阶与调优的书评 · · · · · · ( 全部 1 条 )

《Webpack实战》笔记
这篇书评可能有关键情节透露
Ch.1 | Webpack简介 Webpack的作用是模块(模块:执行一个功能的代码)打包。 传统引入script文件到页面中的开发方式: 模块间耦合度高,依赖性强也就算了,依赖还不显式; 每个script分别请求,网络开销很大; 每个script的顶层作用域是全局作用域,在声明函数和变量时会污染... (展开)> 更多书评 1篇
当前版本有售 · · · · · ·
-
每满100-50
这本书的其他版本 · · · · · · ( 全部2 )
以下书单推荐 · · · · · · ( 全部 )
- 评分可能虚高书籍 (无心恋战)
- 前端应用:框架工具/Node/设计架构/Web性能… (李鼎)
- 技术书籍 (啊盼)
- 前端 (豆友218471621)
- 书单|8.5分-8.9分 (北风)
谁读这本书?
二手市场
订阅关于Webpack实战:入门、进阶与调优的评论:
feed: rss 2.0
0 有用 [已死亡] 2020-02-09 21:03:21
很好,读了需要的几章,以后有需要再继续。其实是挺薄的一本书啦哈哈,不过买的是作者的经验吧
0 有用 拉风的人儿 2020-05-16 10:51:39
语言简洁,没有废话。对webpack的原理进行了系统的讲解,虽然不够深入,作为入门还是不错。
3 有用 生锈发条 2019-12-06 00:44:13
在微信读书上读了 3h 52 min,记了 118 条笔记,基本上用的都是碎片时间。CommonJS 和 ES6 Modules 讲得很细致,是基础。基于 Webpack 的各种应用场景讲配置,很生动。总体来说,是一本不可多得的没有废话的书,并不是所谓的入门书,有没有经验都适合读。
0 有用 qingshan 2020-08-23 18:06:33
内容深度一般,主要讲的是怎么用;思路清晰,读起来非常顺畅
0 有用 bianbian 2020-05-18 23:13:47
查漏补缺,系统的学习一下webpack,还是有帮助的
1 有用 CekD.M 2022-04-17 23:12:02
一般般,讲的都很浅显,内容都能在网上轻易找到,比较适合初学者。好处在于帮助学习者减少了去网上到处找这些资料的时间,读过之后再去找会快很多。
0 有用 思来享趣 2022-04-09 23:58:46
比较认真读了一天,做了笔记,搞了测试 书中有些许错误,且webpack5之后,不少配置有改动,读者注意 整体还是不错的
0 有用 Kiyonami Yu 2022-03-28 23:07:48
这本书周日匆匆过了一遍,前面整体流程和原理看的比较仔细,后面对 webpack 的细节配置就一带而过;本书部分 API 可能老旧不再适用,但思路多半是一致的,参考官方文档,可以完成相同的效果;对于新人应该可以快速入门,对于 Webpack 熟练工可以查漏补缺;第二章对于多种打包方式介绍更加成体系;自己也跑了几个 demo,对比 webpack 不同的打包结果,感觉收益很大;因为读的匆忙,暂且四星推... 这本书周日匆匆过了一遍,前面整体流程和原理看的比较仔细,后面对 webpack 的细节配置就一带而过;本书部分 API 可能老旧不再适用,但思路多半是一致的,参考官方文档,可以完成相同的效果;对于新人应该可以快速入门,对于 Webpack 熟练工可以查漏补缺;第二章对于多种打包方式介绍更加成体系;自己也跑了几个 demo,对比 webpack 不同的打包结果,感觉收益很大;因为读的匆忙,暂且四星推荐; (展开)
0 有用 無恙 2022-03-15 22:23:25
读起来很顺畅 平时工作中涉及到的点都有讲到 对了解下其中的原理有些帮助 就是有些字段已经废弃了 不过可以查最新的文档
0 有用 查查尔斯 2022-03-02 01:21:16
用来入门不错的,也介绍了一些优化方法。不过随着webpack 5的推出,里面很多东西都有了更好的实现方法