下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 31 | 代码分割和动态import
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 | 结束语
本节摘要
展开

精选留言(12)

  • 2019-08-13
    老师,麻烦看下这个是什么报错啊?@老师
    react-dom.min.js:162 TypeError: Failed to construct 'Text': Please use the 'new' operator, this DOM object constructor cannot be called as a function.
        at beginWork (react-dom.min.js:133)
        at d (react-dom.min.js:158)
        at f (react-dom.min.js:159)
        at g (react-dom.min.js:159)
        at t (react-dom.min.js:167)
        at x (react-dom.min.js:166)
        at r (react-dom.min.js:164)
        at v (react-dom.min.js:163)
        at Object.enqueueSetState (react-dom.min.js:124)
        at Search.p.setState (react.min.js:18)
    展开

    作者回复: 需要贴一下代码链接,不然直接从堆栈看不好排查

    1
    1
  • 2019-07-09
    <script crossorigin="anonymous" src="//11.url.cn/now/lib/4/lib.js?_bid=152"></script>
    老师,webpack打包出来像这种加版本号是怎么加的,可以加时间戳么
    1
  • 动态引入的地址怎么改,比如上线我的项目放在,baidu/js/demo.js。动态生成的js放哪里好呢
  • 2019-09-25
    老师,我这样配置splitchunks为什么不报错啊?
      splitChunks: {
                chunks: "all",
                cacheGroups: {
                    test: /[\\/]node_modules[\\/]/,
                }
            }
    test这个配置项不是应该在vendors中设置吗?为什么这样配置不报错呢?而且输出的结果中本应该是venodrs的前缀变成了test前缀
    展开
    2
  • 2019-09-19
    SplitChunksPlugin配置后,动态import就无法生效了。打包后,在浏览器端会报错。
    1
  • 2019-09-18
    如果有SplitChunksPlugin配置,@babel/plugin-syntax-dynamic-import插件不起作用吧。我试了试开启前者配置,然后后者分别配置和不配置都打包了一下,完全一样,没有区别。但是关闭前者配置就不一样了
  • 老师你好,麻烦问一下,就是当 import '../../common'这一句加上的时候,懒加载就不成功,整个Search组件都无法显示,当删了这句话之后就可以了,有点迷
    1
  • 2019-07-15
    老师,可不可以讲讲模块化拆分,就是项目里的每个模块都是一个独立的app
    2
  • 2019-07-04
    老师,求助,研究了半天也没好,我想点击动态引入import('./test.js'),但是报错,如下,
    react-dom.development.js:12938 Uncaught TypeError: Failed to construct 'Text': Please use the 'new' operator, this DOM object constructor cannot be called as a function.
        at renderWithHooks (react-dom.development.js:12938)
        at mountIndeterminateComponent (react-dom.development.js:15020)
        at beginWork (react-dom.development.js:15625)
        at performUnitOfWork (react-dom.development.js:19312)
        at workLoop (react-dom.development.js:19352)
        at HTMLUnknownElement.callCallback (react-dom.development.js:149)
        at Object.invokeGuardedCallbackDev (react-dom.development.js:199)
        at invokeGuardedCallback (react-dom.development.js:256)
        at replayUnitOfWork (react-dom.development.js:18578)
        at renderRoot (react-dom.development.js:19468),
    我的代码:
    //主js文件
    import React from 'react';
    import '../../common';
    // import Text from './test';

    export default class Roots extends React.Component{
        constructor () {
            super(...arguments);
            this.state = {
                Text: null
            };
        }
        

        render () {
            const hangel = () => {
                import('./test.js').then((Text) => {
                    this.setState({
                        Text: Text.default()
                    })
                });
            }
            return (<div className="search">
                search pages
                工业也米娜sdfdsfsdf
                { this.state.Text ? <Text /> : '' }
                <div onClick={hangel}>点我吧</div>
            </div>)
        }
    }
    //test.js文件
    import React from 'react';
    export default () => (<div>动态 test</div>);
    展开
    5
  • 2019-07-01
    请问下,老师一直提到的cjs是指什么意思?

    作者回复: 就是common js

  • 30多讲收获满满,期待之后的内容!加油老师

    作者回复: 嗯嗯,继续更新高质量的视频内容出来 😄

  • 2019-06-24
    老师你好,我看有的地方在动态import的时候会写/* webpackChunkName: "xxxx" */的注释在import里面,这个是要做什么呢? 还有这么做有什么好处呢?
    2