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

玩转webpack

共84讲 · 84课时,约900分钟
5428
免费
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 | 结束语
本节摘要

精选留言(32)

  • 2019-06-25
    老师有一个疑问,在webpack.prod.js文件里已经写入了react和React-dom的entry地址,为什么还要在html文件中引入呢?
    6
    13
  • 2019-06-20
    为什么    <script src="https://11.url.cn/now/lib/16.2.0/react.min.js"></script>
        <script src="https://11.url.cn/now/lib/16.2.0/react-dom.min.js"></script>这两句必须放在body里面才起作用呢
    2
    4
  • 2019-07-04
    用splitChunksPlugin分离公共资源包如:common.js,但是会出现多页面可能不引用common.js,或者引用一部分,怎么按需加载本页面需要的资源。求解答
    3
    3
  • 2019-07-02
    百度: html-webpack-plugin 的作用是:当使用 webpack 打包时,创建一个 html 文件,并把 webpack 打包后的静态文件<strong>自动</strong>插入到这个 html 文件当中。
    我也不太明白已经配置了html-webpack-plugin 最后为啥要手动在index.html中添加两个script标签啊。 希望老师能够回复下

    3
  • 2019-06-12
    如果我既想提取静态资源react,又想提取公共资源还想打到不同的文件里怎么办,支持数组方式吗

    作者回复: 可以的,这个cacheGroup 可以配置多个组的。想打包到不同的文件只需要传到 html-webpack-plugin的 chunk 按照需要设置即可

    2
    3
  • 2019-07-09
    这里没有在html模板里面用script引入react和react-dom, webpack.prod.js配置好后,在打包后的index.html中,自动引入了react和react-dom各一次, 在search.html中各引入了两次,这是为什么啊,求翻牌!
    1
    2
  • 2019-10-12
    老师, 如果我既想抽common 又想抽出来react和react-dom怎么做 他俩是不是只想选择一个?
    1
    1
  • 2019-09-28
    老师,同时分离基础库和公共脚本,具体要怎么配呢?期望提取出的common公共脚本 + vendor基础库,都可以自定义名称。但是貌似不行。。打包出来的vendor,总是vendors~xxx_hash.js这样的。而且设置两次name,第二次的会覆盖掉第一次的。。
      这样配的: cacheGroups: {
    commons: {
    name: 'common',
    chunks: 'all',
    minChunks: 2
    },
    vendors: {
    test: /(react|react-dom)/,
                                            name: 'vendor',
    chunks: 'all'
    }
    }
    展开
    2
    1
  • 2019-08-13
    老师,我在使用splitChunks和htmlWebpackPlugin@next的时候,发现只有把splitChunks的minChunk设置为1也就是默认值,htmlWebpackPlugin才会把该chunk注入到html模版中。请问您有遇到过类似的问题嘛?
    1
  • 2019-07-21
    老师,我看视频上最后那个打包公共资源部分,虽然提取出来了 commons 模块,但是 common/index.js 里面的 common 函数的内容并没有在那个打印出来的文件里面啊,我看视频上那个文件里面的内容是空的啊,这是什么原因呢
    1
    1
  • 2019-06-15
    为什么使用 optimization.splitChunks 抽取了 vue、vue-router、vuex之后,当我运行的时候,浏览器中报 Uncaught TypeError: Cannot read property 'call' of undefined 这个错误哦,这些包确实是抽取出来了,但是就是运行不起来,请问下问题出在哪里,我都是按照视频的要求来配置的,只是你是用的react,我是使用的vue,应该没影响吧?

    作者回复: 嗯,和框架无关的,本身 webpack 就是通用的打包工具。能否把你的项目发个链接我看下呢?帮你分析分析

    2
    1
  • 2019-06-15
    老师会讲一些比较好点的换肤方案吗?

    作者回复: 哈哈,换肤是指 VS Code的编辑器主题吗?

    1
    1
  • 2019-12-15
    不是太明白,也不太清楚最佳实践是什么。。只能先继续往下学吧
  • 为什么我按照老师的代码,注释了script和HtmlWebpackExternalsPlugin,然后配置了optimization,但是build完没有vendors.js这个文件呢????求翻牌
  • 2019-11-12
    视频里打出来的common里面怎么没有common那个方法
  • 2019-10-13
    入口文件:
    import {AppContainer} from "react-hot-loader";
    import React,{Component} from "react";
    import ReactDOM from "react-dom"
    import App from "./components/index.js"

    const render = Component=>{
        ReactDOM.render(
            <AppContainer>
                <Component></Component>
            </AppContainer>,
            document.getElementById("root")
        )
    }
    热更新部分代码。。。,其中App组件中包括Header和Footer React组件
    webpack部分配置
     new HtmlWebpackPlugin({
               template:"./index.html",
               inject:true,
               filename:"index.html",
               chunks:["app","vendors"],
           }),
    resolve: {
         alias: {
             'react-dom': '@hot-loader/react-dom'
         }
      },
    。。。
     splitChunks:{
            cacheGroups: {
             vendors: {
                test: /[\\/]node_modules[\\/]/,
                // test:/(react|react-dom)/,
                name:"vendors",
                chunks:"all",//initial async all
                minChunks:2
             }
            }
          }
    不知道为什么minChunks设置为>=2的时候一直无法提取vendors,而当我将它改为1的时候就可以提取出来了,老师麻烦帮忙看一下,这个问题困扰我很久啊,谢谢
    展开
  • 2019-10-11
    module.exports = {
        //...
        optimization: {
          splitChunks: {
            // async:异步引入的库进行分离(默认), initial: 同步引入的库进行分离, all:所有引入的库进行分离(推荐)
            chunks: 'async',
            minSize: 30000, // 抽离的公共包最小的大小,单位字节
            maxSize: 0, // 最大的大小
            minChunks: 1, // 资源使用的次数(在多个页面使用到), 大于1, 最小使用次数
            maxAsyncRequests: 5, // 并发请求的数量
            maxInitialRequests: 3, // 入口文件做代码分割最多能分成3个js文件
            automaticNameDelimiter: '~', // 文件生成时的连接符
            automaticNameMaxLength: 30, // 自动自动命名最大长度
            name: true, //让cacheGroups里设置的名字有效
            cacheGroups: { //当打包同步代码时,上面的参数生效
              vendors: {
                test: /[\\/]node_modules[\\/]/, //检测引入的库是否在node_modlues目录下的
                priority: -10, //值越大,优先级越高.模块先打包到优先级高的组里
                filename: 'vendors.js'//把所有的库都打包到一个叫vendors.js的文件里
              },
              default: {
                minChunks: 2, // 上面有
                priority: -20, // 上面有
                reuseExistingChunk: true //如果一个模块已经被打包过了,那么再打包时就忽略这个上模块
              }
            }
          }
        }
      };
    展开
  • 老师,我使用的是vue,我在官网上看到他们说推荐使用npm安装vue,那是不是vue这些基础包就不需要分离出来,那vue项目的分包策略又是什么呢
  • 2019-08-08
    老师, 如果我想把基础库的react-,reactDom分离出来, 又想把我特定的组件进行抽离出来, 并且我抽离出来的文件不一定每个页面都需要引用(按需加载), 如何改进行操作呢
  • 2019-07-26
    想问下关于CDN 的问题:
    1, 什么样的情况下把资源放入CDN?
    2, 有哪些CDN比较好用?
    3,一旦CDN出问题,有没有什么成熟解决(备用)方案?