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

精选留言(42)

  • 2019-05-31
    我没装babel,js入口里写了个箭头函数,webpack命令后,也成功编译了 为什么?

    作者回复: 这是因为 webpack4 在 mode 设置成 production 后会默认使用了terser-webpack-plugin插件,这个插件可以支持 ES6 语法的 uglify。

    这个是压缩插件的切换历史:https://github.com/webpack/webpack/commit/311a7285d36b38bada46102967c431e93ff48a89

    Some history:
    * `uglifyjs-webpack-plugin` < v1.0 used the minifier `uglify-js`
    * however `uglify-js` does not support ES6, which resulted in a fork
      called `uglify-es` that was developed in the `uglify-js` repository,
      but under the `harmony` branch
    * `uglifyjs-webpack-plugin` v1.x switched to `uglify-es` for ES6 support
    * however `uglify-es` stopped being maintained:
      mishoo/UglifyJS2#3156 (comment)
    * which led to a fork called `terser` that has incorporated all of
      the unmerged PRs and will be where all new development occurs:
      https://github.com/fabiosantoscode/terser
    * `terser-webpack-plugin` was created, which is the `terser` equivalent
      of `uglifyjs-webpack-plugin`:
      https://github.com/webpack-contrib/terser-webpack-plugin
    * `uglifyjs-webpack-plugin` v2.x will be switching back to `uglify-js`,
      so any project that needs to support ES6 now needs to switch to
      `terser-webpack-plugin`.

    Fixes #7923.

    10
  • 2019-06-08
    npm i react react-dom @babel/preset-react -D;
    这样把react react-dom放在devDependencies中没问题吗?
    我想知道package.json中dependencies和devDependencies的区别...

    作者回复: 嗯,这个是为了演示哈。对于 react和 react-dom 应该是:
    npm i react react-dom -S

    对于构建相关配置应该:
    npm i @babel/preset-react -D

    package.json中dependencies和devDependencies的区别是:devDependencies用于本地环境开发时候,dependencies用户发布环境,也就是开发阶段的依赖最后是不对被打入包内。

    通常框架、组件和 utils 等业务逻辑相关的包依赖放在dependencies里面,对于构建、ESlint、单元测试等相关依赖放在devDependencies中

    2
    6
  • 2019-08-13

    老师,跟着您的步骤走,我这边报这个错,是什么原因?
    Uncaught TypeError: o.a.render is not a function
    我把我做的上传到了git,麻烦老师帮忙看下: https://gitee.com/kaiking_g/webpack-errors.git

    作者回复: import ReactDom from 'react';

    这一行需要改成:
    import ReactDom from 'react-dom';

    1
    2
  • 2019-06-04
    希望后续能简单讲解一下.babelrc文件的配置

    作者回复: 主要是这个 .babelrc 比较简单,其实就包含两块内容,一个是 babel presets,另一个是 babel plugins数组。比如 .babelrc 文件:
    {
        "presets": [
          "@babel/preset-env”
        ],
        "plugins": [
            "@babel/proposal-class-properties"
        ]
    }

    plugin 用来支持某个功能,presets 是多个 plugin 的集合。就是这么简单

    2
  • 2019-10-30
    老师,您自己在配置loader的时候好像正则表达式好像忘了转义“.”了
    原视频如下:
    module: {
         rules: [
             {
                 test: /.js$/,
                 use: 'babel-loader'
             }
         ]
    }
    应该是:
    module: {
         rules: [
             {
                 test: /\.js$/,
                 use: 'babel-loader'
             }
         ]
    }
    展开
    1
  • x
    2019-09-06
    关于react解析的时候loader报错的,不知道有没有人和我一样,在loader那里的正则匹配加了引号
    1
  • 2019-12-07
    按照教程走的, 为啥报这个错. loader 配置都一样的.
    ERROR in ./app/main.js 11:6
    Module parse failed: Unexpected token (11:6)
    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
    | render() {
    | return (
    > <div>This is a react Learn component</div>
    | )
    | }
    展开
  • 2019-11-12
    babel7的配置文件从 .babelrc 改为了 babel.config.js
  • 2019-11-10
    作者你好,有没有 vue相关webpack配置的例子?
  • 2019-10-29
    跟老师视频一模一样的步骤,报错:
    Module parse failed: Unexpected token (8:9)
    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
    | class Search extends React.Component {
    | render() {
    > return <div>Search Text</div>;
    | }
    | }


    展开
  • 2019-10-12
    老师,为何上一小节,没有引入babel,webpack却也可以压缩编译?
  • 2019-09-03
    Babel/preset-env是否会对fetch兼容呢
    这个对Babel版本有要求吗
  • 2019-08-30
    老师请问一下,安装的@babel/core这个插件的作用是什么?这个插件是否是babel的核心插件?相当于webpack的webpack,每次使用babel就需要下这个插件?
    2
  • 2019-08-25
    老师,我用babel 下载babel-loader @babel/core @babel/preset-env webpack打包一直报错,求解!
  • 老师,能不能额外补充一起webpack打包ts、tsx文件的视频呀?
  • 2019-08-02
    老师 ,mode 设置成 none ,没有 .babelrc 文件 ,照样打包成功。是什么原因呢 ?
    代码:27ng.com/fe/webpack/webpack.zip

    作者回复: 这个应该不会,看代码链接访问是403,可以重新提供一个链接吗?我帮你看看。

    1
  • 2019-07-14
    不好意思 老师 刚才我问题的问题 我找到答案了 是我自己粗心 代码写错了 多加了个引号

    module: {
        rules: [
          {
            test: /.js$/, // 注意这个地方 不能写成 ‘/.js$/’ 这个没有引号的,否则报错~~
            use: 'babel-loader'
          }
        ]
      }
    我看了一下留言区有人和我出现一样的问题 ,估计都是是这个问题。
    展开

    作者回复: 哦哦,好嘞,强👍

  • 2019-07-14
    老师我按照你视频中的讲解进行操作,但是在解析jsx 的时候,出现了这个报错,说我没有按照相应的loader,但是我是按照你视频中的操作,一步一个代码敲的啊!

    ERROR in ./src/search.js 9:11
    Module parse failed: Unexpected token (9:11)
    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
    |
    | render() {
    > return <div>Search Text</div>;
    | }
    | }
    展开

    作者回复: 这个之前不少同学都遇到过,需要先检查下项目跟目录下是否有 .babelrc 文件(注意是否拼写错误),然后.babelrc 文件的内容是否正确。

    另外可以和课件的源码对照比较一下

  • 2019-07-13
    老师,你写错啦,import ReactDom from 'react-dom';不是from react,不然报错。

    作者回复: 嗯嗯,这个当时录制的时候也注意到啦,后面有修改的哈

  • 2019-07-12
    Uncaught TypeError: o.a.render is not a function
        at Module.<anonymous> (search.js:1)
        at r (search.js:1)
        at search.js:1
        at search.js:1


    构建成功了,但是页面里文字没出来~我百度也没找到
    展开