当前播放: 16 | 解析CSS、Less和Sass
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 | 结束语
16 | 解析CSS、Less和Sass

16 | 解析CSS、Less和Sass

程柳锋
腾讯高级工程师,IVWEB团队社区和工程化负责人
84讲 84课时,约900分钟5527
单独订阅¥99
2人成团¥79
11
本节摘要
登录 后留言

精选留言(18)

  • Mavericker
    loader 链式调用的顺序说错了唉,应该是从右到左,先是 css-loader, 再是 style-loader。

    作者回复: 已更正

    2019-05-29
    13
  • 晓东
    老师,请问style-loader css-loader less-loader分别实现了什么功能,还有顺序那块的执行是类似于compose(style,css,less)这个过程吗

    作者回复: 函数组合通常有两种方式,一种是从左到右(类似 unix 的 pipe),另外一种是从右到左(compose)。此处 webpack 选择的是 compose 方式,从右到左依次执行 loader,每个 loader 是一个函数。

    style-loader: 向 DOM 插入 style 标签,并且将样式插入进去,这样网页才能解析到
    css-loader: 可以让 webpack 解析 css(因为 webpack 原生只支持 js 和 json 的解析),并且将解析出来的 css 转换成一个对象,插入到 JS 里面去。
    less-loader: 将 less 转换成 css

    2019-05-29
    8
  • sandy
    老师讲的很好,webpack小白表示很快乐~

    作者回复: 哈哈,感谢感谢

    2019-05-30
    6
  • 奶尔
    build之后我们都没有xxxx.html的文件,style-loader如何将<style>插入到DOM的呢,老师?
    2019-08-17
    3
  • ThreeTree🏸
    我的理解是:
    use: [
    'style-loader', // 将js字符串生成为style节点(最后执行)
    'css-loader', // 将css转成CommonJS模块(其次执行)
    'sass-loader' // 将sass转成css(最先执行)
    ]

    作者回复: 嗯嗯,理解正确

    2019-05-29
    3
  • 驴肉蒸饺
    老师可否再深入一点点。谢谢老师

    作者回复: 嗯,这门课设计的时候也是考虑到通用性更强一点,难度上也是一个循序渐进的过程。

    2019-05-29
    3
  • 一路向北
    有个问题,视频中使用了css-loader和style-loader,将css样式插入了<style>中。有没有办法将css以<link>的方式引入呢?
    2019-09-16
    2
    2
  • 李萬濟
    请问css-loader转换成的common.js对象是指node内部的module构造函数实例化的对象吗

    作者回复: 是的,Node.js 内部的模块机制规范是基于 common.js。类似:

    module.exports = function () {

    };

    css-loader 就是将 css 代码转换成这样的对象形式。

    2019-08-31
    1
  • 心尘
    这里的test的.都不用反斜杠转义么?

    作者回复: 最好加一个反斜杠哈

    2019-05-31
    1
  • Geek_c67c0a
    老师,我跟着步骤做的,npm run build 出现以下错误,ERROR in ./src/search.css (./node_modules/css-loader/dist/cjs.js!./src/search.css)
    Module build failed (from ./node_modules/css-loader/dist/cjs.js):
    2019-12-21
  • 侯志颖
    老师,我这边使用 scss, 可是报错,不知道啥原因

    1. npm i sass-loader node-sass -D
    2. 加入 rules
               {
                    test: /.s[ac]ss$/i,
                    use: [
                        // Creates `style` nodes from JS strings
                        'style-loader',
                        // Translates CSS into CommonJS
                        'css-loader',
                        // Compiles Sass to CSS
                        'sass-loader',
                    ],
                },
    3. search.js 中 import './a.scss'
    4. 报错 Unknown word

    作者回复: 把代码上传到github,然后贴一下链接我看看。

    2019-09-30
  • metthew😀
    load 链式调用 从右向左
    2019-07-16
  • Ian
    老师我的打包成功了,访问页面报这个错误是什么原因啊

    search.js:22 Uncaught Invariant Violation: Minified React error #200; visit https://reactjs.org/docs/error-decoder.html?invariant=200 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
        at file:///Users/yinzhongwei/phonepro/dist/search.js:22:420
        at i (file:///Users/yinzhongwei/phonepro/dist/search.js:22:523)


    2019-07-12
  • 雨桥明夜
    老师,css-loader options 配置中的 importLoaders 作用意义是什么,文档上写的是“用于配置「css-loader 作用于 @import 的资源之前」有多少个 loader”,这个不是在 ['style-loader', 'css-loader', 'sass-loader'] 这里已经体现出有多少个loader,我感觉应该是自己理解有误,望指出错误。
    2019-07-12
    1
  • 森林迷了鹿
    我想知道我再react项目里配置的webpack.config.js文件配置了less,执行yarn start的时候,配置的less又没了,我是把sass的都变量改成了less,yarn start之后就没了,一头雾水,老师能给我指点迷津吗?
    2019-07-11
  • Geek_10ebab
    如果我想要看loader处理后的结果,我应该怎么设置呢?
    2019-06-25
  • 在男神经路上越走越远
    d:\webpack>npm run build

    > my-project@1.0.0 build d:\webpack
    > webpack

    Hash: d5ac199bd053df1241fb
    Version: webpack 4.34.0
    Time: 2099ms
    Built at: 2019-06-19 11:26:46
       Asset Size Chunks Chunk Names
    index.js 929 KiB main [emitted] main
    Entrypoint main = index.js
    [./node_modules/css-loader/dist/cjs.js!./src/style.css] 194 bytes {main} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 472 bytes {main} [built]
    [./src/index.js] 2.72 KiB {main} [built]
    [./src/style.css] 1.06 KiB {main} [built]
        + 14 hidden modules

    老师,[./node_modules/css-loader/dist/cjs.js!./src/style.css] 194 bytes {main} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 472 bytes {main} [built]这两行是怎么会儿事?
    2019-06-19
  • 金樽明月
    为什么style-loader 要写在css-loader前面?视频中没有听清楚

    作者回复: 这个是因为 loader 的执行有严格的顺序。解析 less 为例子:

    必须先将 less 转换成 css,然后在解析css 为 cjs 对象,最后再将 cjs 对象以 style 标签的方式插入到页面上。

    因此执行顺序是: less-loader -> css-loader ->style-loader。

    编写顺序搞好需要和执行顺序相反,因为 loader 采用的是 compose 的实现,不是 unix 的 pipe 实现。在第7章也会详细介绍 loader 顺序的实现原理

    2019-06-02
收起评论
看过的人还看
Node.js开发实战

杨浩  腾讯高级工程师

57讲 | 3927 人已学习

拼团 ¥99 原价 ¥129
重学前端

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

58讲 | 33189 人已学习

¥99
TypeScript开发实战

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

47讲 | 3088 人已学习

拼团 ¥99 原价 ¥129
浏览器工作原理与实践

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

43讲 | 6354 人已学习

拼团 ¥79 原价 ¥99