玩转 webpack
程柳锋
腾讯高级工程师,IVWEB 团队社区和工程化负责人
27458 人已学习
新⼈⾸单¥68
课程目录
已完结/共 87 讲
加餐:webpack 5 专题内容 (3讲)
玩转 webpack
登录|注册
留言
52
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 15 | 解析ECMASCript 6和React JSX
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 为什么需要构建工具
04 | 前端构建演变之路
05 | 为什么选择webpack
06 | 初识webpack
07 | 环境搭建:安装webpack
08 | webpack初体验:一个最简单的例子
09 | 通过npm script运行webpack
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代码压缩
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 | 构建异常和中断处理
38 | 构建配置包设计
39 | 功能模块设计和目录结构
40 | 使用ESLint规范构建脚本
41 | 冒烟测试介绍和实际运用
42 | 单元测试和测试覆盖率
43 | 持续集成和Travis CI
44 | 发布构建包到npm社区
45 | Git Commit规范和changelog生成
46 | 语义化版本(Semantic Versioning)规范格式
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服务
59 | webpack启动过程分析
60 | webpack-cli源码阅读
61 | Tapable插件架构与Hooks设计
62 | Tapable是如何和webpack进行关联起来的?
63 | webpack流程篇:准备阶段
64 | webpack流程篇:模块构建和chunk生成阶段
65 | webpack流程篇:文件生成
66 | 动手编写一个简易的webpack(上)
67 | 动手编写一个简易的webpack(下)
68 | loader的链式调用与执行顺序
69 | 使用loader-runner高效进行loader的调试
70 | 更复杂的loader的开发场
71 | 实战开发一个自动合成雪碧图的loader
72 | 插件基本结构介绍
73 | 更复杂的插件开发场景
74 | 实战开发一个压缩构建资源为zip包的插件
75 | 商城技术栈选型和整体架构
76 | 商城界面UI设计与模块拆分
77 | React全家桶环境搭建
78 | 数据库实体和表结构设计
79 | 登录注册模块开发
80 | 商品模块开发
81 | 订单模块开发
82 | 谈谈Web商城的性能优化策略
83 | 功能开发总结
84 | 玩转webpack结束语
加餐:webpack 5 新特性解析
加餐:bundle和bundless的差异
加餐:Vite的构建原理
本节摘要
登录 后留言

全部留言(52)

  • 最新
  • 精选
路小静
我没装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
30
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
3
16
Baron
希望后续能简单讲解一下.babelrc文件的配置

作者回复: 主要是这个 .babelrc 比较简单,其实就包含两块内容,一个是 babel presets,另一个是 babel plugins数组。比如 .babelrc 文件: { "presets": [ "@babel/preset-env” ], "plugins": [ "@babel/proposal-class-properties" ] } plugin 用来支持某个功能,presets 是多个 plugin 的集合。就是这么简单

2019-06-04
6
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
2
4
GitHubGanKai
不好意思 老师 刚才我问题的问题 我找到答案了 是我自己粗心 代码写错了 多加了个引号 module: { rules: [ { test: /.js$/, // 注意这个地方 不能写成 ‘/.js$/’ 这个没有引号的,否则报错~~ use: 'babel-loader' } ] } 我看了一下留言区有人和我出现一样的问题 ,估计都是是这个问题。

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

2019-07-14
4
27
老师 ,mode 设置成 none ,没有 .babelrc 文件 ,照样打包成功。是什么原因呢 ? 代码:27ng.com/fe/webpack/webpack.zip

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

2019-08-02
3
2
Geek_fcb60e
老师,如果用了ts,还需要Babel吗?

作者回复: 不需要了,ts使用ts-loader即可

2019-06-29
1
Geek_10ebab
请问老师,babel的作用是转换ES6语法,那么使用@babel/core和babel-loader就可以了,为什么还要使用@babel/preset-env这个呢?

作者回复: babel-loader 解析ES6的语法也是需要知道哪些语法需要解析,需要通过.babelrc进行配置,这个@babel/preset-env 就是告诉 babel-loader 要解析ES6的语法,其它的 react 语法可以通过其它的 babel preset 进行

2019-06-25
1
der果
babel可以编译箭头函数等语法,但是全局方法例如promise等方法如何编译成es5

作者回复: babel 只转换新的JS语法,而不转换新的API,例如全局方法:Map、Set、Promise 这些是无法编译成 ES5的哈。需要通过 babel-polyfill 进行

2019-06-11
1
GitHubGanKai
老师我按照你视频中的讲解进行操作,但是在解析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-14
收起评论