下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 53 | 进一步分包:预编译资源模块
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

玩转webpack

共84讲 · 84课时,约900分钟
5401
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
免费
07 | 环境搭建:安装webpack
08 | webpack初体验:一个最简...
09 | 通过npm script运行webpa...
免费
10 | webpack核心概念之entry
免费
11 | webpack核心概念之output
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React...
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理...
20 | 文件指纹策略:chunkhash...
21 | HTML 、CSS和JavaScript...
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer...
24 | 移动端CSS px自动转换成r...
25 | 静态资源内联
26 | 多页面应用打包通用方案
27 | 使用sourcemap
28 | 提取页面公共资源
29 | Tree Shaking的使用和原...
30 | Scope Hoisting使用和原...
31 | 代码分割和动态import
32 | 在webpack中使用ESLint
33 | webpack打包组件和基础库
34 | webpack实现SSR打包(上)
35 | webpack实现SSR打包(下)
36 | 优化构建时命令行的显示日...
37 | 构建异常和中断处理
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changel...
46 | 语义化版本(Semantic Ve...
47 | 初级分析:使用webpack内...
48 | 速度分析:使用speed-mea...
49 | 体积分析:使用webpack-b...
50 | 使用高版本的webpack和Nod...
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模...
54 | 充分利用缓存提升二次构建...
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无...
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设...
62 | Tapable是如何和webpack进...
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建...
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpac...
67 | 动手编写一个简易的webpac...
68 | loader的链式调用与执行顺...
69 | 使用loader-runner高效进...
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧...
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源...
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈web商城的性能优化策...
83 | 功能开发总结
84 | 结束语
本节摘要
展开

精选留言(15)

  • 2019-08-28
    老师,这个分包后到生产环境是需要手动引入分包的js吗,我一直报not defined。。
    2
    8
  • 2019-11-02
    老师,这里构建打包的过程时缺少了一步,自动将 dll 包插入各个 html 页面中,还需要手动进行插入。
    3
  • 2019-09-30
    dll的方式好像在webpack4里面应用的不是很多了,webpack4已经做了优化,我查看了下vue-cli以及create-react-app都抛弃了这个配置,具体原因地址:https://github.com/vuejs/vue-cli/issues/1205

    作者回复: 是的,如果项目使用了 Webpack4,确实对 dll 的依赖没那么大,使用 dll 相对来说提升也不是特别明显。而且有 hard-source-webpack-plugin 可以极大提升二次构建速度。

    不过从实际前端工程中来说, dll 还是很有必要掌握的。对于一个团队而言,基本是采用相同的技术栈,要么 React、要么Vue 等等。这个时候,通常的做法都是把公共框架打成一个 common bundle 文件供所有项目使用。比如我们团队会将 react、react-dom、redux、react-redux 等等打包成一个公共库。dll 可以很好的满足这种场景:将多个npm包打成一个公共包。因此团队里面的分包方案使用 dll 还是很有价值,常见的会从整个工程的角度分为基础包(react、redux等)、业务公共包(所有业务都要用到的监控上报脚本、页面初始化脚本)、某个业务的js。

    2
  • 2019-09-22
    老师,我npm run build之后,index.html中并没有引入dll打包出来的文件,是还需要做别的操作吗?
    1
  • 2019-08-12
    老师好,我这里按照您的方法分别写好了DllPlugin和DllReferencePlugin,且编译用时、包的大小均有减少无报错。但运行的时候提示library_[hash] is not defined。 不知道是什么原因? 是不能和splitChunks同时使用吗? 希望老师能指点一二
    3
    1
  • 分包好了,上线怎么搞,公用包的js扔哪里呢。。刷到了50章,发现有些学员问题没人给出答案啊。云里雾里。。
  • 2019-11-05
    我来分析一下为什么会报library_fc272b992b57c3c5ad13 is not defined, 因为DllPlugin把react公共包打包完成后,这个js文件全局暴露一个变量名就是library_fc272b992b57c3c5ad13,老师的输出配置output.library = [name], 而new webpack.DllPlugin({name: [name]_[hash]}),这两个值必须相等才行,如果不等会报错,一个加hash,另外一个也要加hash,或者都不加hash。另外我通过测试发现,不能给filename加chunkhash。这上面的步骤完成,再在html里面引入library_fc272b992b57c3c5ad13.dll这个js文件,或者通过AddAssetHtmlPlugin这个插件自动注入
    展开
    1
  • 2019-10-30
    老师,这个分包后到生产环境是需要手动引入分包的js吗,还是说html-webpack-plugin会自动打进去???
  • 2019-10-29
    老师,webpack打包的时候,怎么分别打包成不同的目录,比如,search/下面放search.js search.html
    图片有专门的image的文件目录 css有专门的css文件目录?可能你讲了我还没看到,请老师指点,谢谢。
  • 2019-10-18
    老师你讲 promise 的源代码可以分享一下嘛
  • 2019-09-25
    老师,你的vscode的webpack自动补全用的哪个插件啊?
  • 2019-09-03
    output.library 我在官网上没搜到是什么用途, 我测试了一下, 不写也OK...
  • 2019-08-10
    请问老师,dllplugin和splitChunks可以一起用吗?有没有什么区别和联系?

    作者回复: 可以一起使用。 DllPlugin 通常用于基础包(框架包、业务包)的分离。

    SplitChunks 虽然也可以做 DllPlugin 的事情,但是更加推荐使用 SplitChunks 去提取页面间的公共 js 文件。因为使用 SplitChunks 每次去提取基础包还是需要耗费构建时间的,如果是 DllPlugin 只需要预编译一次,后面的基础包时间都可以省略掉。

  • 2019-08-09
    通过分包,会多一个 script 标签,这个script 标签的路径是从 manifest.json 中获取的吧,所以我部署的话也得考虑将 build 目录 和 dist 目录一同部署吧
  • 2019-08-08
    entry中的react reactdom等是在Index入口模板中用cdn引入的吗还是怎么取到的这个全局文件,如果是cdn引入的话最后生成的这个新的script标签会把以前cdn的替换掉吗