当前播放: 15 | 解析ECMASCript 6和React JSX
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:webpack与构建发展简史 (9讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 为什么需要构建工具
免费
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
07 | 环境搭建:安装webpack
免费
08 | webpack初体验:一个最简单的例子
09 | 通过npm script运行webpack
第二章:webpack基础用法 (12讲)
10 | webpack核心概念之entry
免费
11 | webpack核心概念之output
免费
12 | webpack核心概念之loaders
13 | webpack核心概念之plugins
14 | webpack核心概念之mode
15 | 解析ECMASCript 6和React JSX
16 | 解析CSS、Less和Sass
17 | 解析图片和字体
18 | webpack中的文件监听
19 | webpack中的热更新及原理分析
20 | 文件指纹策略:chunkhash、contenthash和hash
21 | HTML 、CSS和JavaScript代码压缩
第三章:webpack进阶用法 (16讲)
22 | 自动清理构建目录产物
23 | PostCSS插件autoprefixer自动补齐CSS3前缀
24 | 移动端CSS px自动转换成rem
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 | 构建异常和中断处理
第四章:编写可维护的webpack构建配置 (9讲)
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changelog生成
46 | 语义化版本(Semantic Versioning)规范格式
第五章:webpack构建速度和体积优化策略 (12讲)
47 | 初级分析:使用webpack内置的stats
48 | 速度分析:使用speed-measure-webpack-plugin
49 | 体积分析:使用webpack-bundle-analyzer
50 | 使用高版本的webpack和Node.js
51 | 多进程/多实例构建
52 | 多进程并行压缩代码
53 | 进一步分包:预编译资源模块
54 | 充分利用缓存提升二次构建速度
55 | 缩小构建目标
56 | 使用Tree Shaking擦除无用的JavaScript和CSS
57 | 使用webpack进行图片压缩
58 | 使用动态Polyfill服务
第六章:通过源代码掌握webpack打包原理 (9讲)
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设计
62 | Tapable是如何和webpack进行关联起来的?
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建和chunk生成阶段
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpack(上)
67 | 动手编写一个简易的webpack(下)
第七章:编写loader和插件 (7讲)
68 | loader的链式调用与执行顺序
69 | 使用loader-runner高效进行loader的调试
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧图的loader
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源为zip包的插件
第八章:React全家桶和webpack开发商城项目 (10讲)
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈Web商城的性能优化策略
83 | 功能开发总结
84 | 玩转webpack & 结课测试
15 | 解析ECMASCript 6和React JSX

15 | 解析ECMASCript 6和React JSX

程柳锋
腾讯高级工程师,IVWEB团队社区和工程化负责人
全集7133
新人首单 ¥19.9 原价 ¥99
17
本节摘要
登录 后留言

精选留言(48)

  • 路小静
    我没装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.

    2019-05-31
    19
  • Jeff、
    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中

    2019-06-08
    2
    12
  • x
    关于react解析的时候loader报错的,不知道有没有人和我一样,在loader那里的正则匹配加了引号
    2019-09-06
    1
    5
  • Geek_cd8e9b
    老师,您自己在配置loader的时候好像正则表达式好像忘了转义“.”了
    原视频如下:
    module: {
         rules: [
             {
                 test: /.js$/,
                 use: 'babel-loader'
             }
         ]
    }
    应该是:
    module: {
         rules: [
             {
                 test: /\.js$/,
                 use: 'babel-loader'
             }
         ]
    }
    2019-10-30
    1
    4
  • kaiking

    老师,跟着您的步骤走,我这边报这个错,是什么原因?
    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';

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

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

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

    2019-07-14
    2
  • Baron
    希望后续能简单讲解一下.babelrc文件的配置

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

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

    2019-06-04
    2
  • 🐬
    老师,想知道create-react-app和vue cli自带的打包工具是不是这些各种插件都已经有的,是直接用就行还是 也有地方需要自己优化
    2020-04-12
    1
  • york
    ERROR in ./src/search.js 9:15
    Module parse failed: Unexpected token (9:15)
    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>;
    | }
    | }
    请问老师,第二章15节,我照着您的代码敲了之后,执行npm run build报错了呢
    2020-03-24
    2
    1
  • 就像曹操贪慕着小乔
    老师讲的真的很好 简单易懂 基础差的我也能学会 感谢极客时间的平台 虽然我说的很像是个托 但我确实不是 哈哈
    2020-06-19
  • 孙哲
    react react-dom 为什么要 -D安装呢? 不是要装在 --save吗?
    2020-06-11
    1
  • xgqfrms
    react react-dom 要安装成项目依赖,才对呀

    npm i -S
    2020-05-27
  • blueBean
    老师,为什么解析react代码不需要在webpack.config.js里配置loader呢?
    2020-03-24
  • xuwentao93
    按照教程走的, 为啥报这个错. 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-12-07
    2
  • Valar Morghulis
    babel7的配置文件从 .babelrc 改为了 babel.config.js
    2019-11-12
  • Ctl
    作者你好,有没有 vue相关webpack配置的例子?
    2019-11-10
  • windki
    跟老师视频一模一样的步骤,报错:
    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-29
    3
  • 花狗是我
    老师,为何上一小节,没有引入babel,webpack却也可以压缩编译?
    2019-10-12
  • feidiy
    Babel/preset-env是否会对fetch兼容呢
    这个对Babel版本有要求吗
    2019-09-03
  • 门司
    老师请问一下,安装的@babel/core这个插件的作用是什么?这个插件是否是babel的核心插件?相当于webpack的webpack,每次使用babel就需要下这个插件?
    2019-08-30
    2
收起评论
看过的人还看
重学前端

程劭非(winter)  前手机淘宝前端负责人

58讲 | 36293 人已学习

新人首单 ¥19.9 原价 ¥99
TypeScript开发实战

梁宵  搜狗营销事业部高级架构师

47讲 | 4256 人已学习

新人首单 ¥29.9 原价 ¥129
Node.js开发实战

杨浩  腾讯高级工程师

57讲 | 5802 人已学习

新人首单 ¥29.9 原价 ¥129
浏览器工作原理与实践

李兵  前盛大创新院高级研究员

45讲 | 8845 人已学习

新人首单 ¥19.9 原价 ¥99