1. 什么是 loader

官方的解释是这样的:

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

可能会一脸懵懂吧。

说白了,就是 loader 类似于 task,能够处理文件,比如把 Scss 转成 CSS,TypeScript 转成 JavaScript 等。

再不明白的话,还是用实例来说明吧。(其实它的概念并不重要,你会用就行)

2. 用 css-loader 和 style-loader 处理 CSS

现在我们来演示一下如何用 loader 来处理 CSS 文件。

先准备好内容。

src/app.css

body {background: pink; } 

src/app.js

import css from './app.css'; console.log("hello world"); 

如果你现在运行 npm run dev 或 webpack 命令,就会出现类似下面的提示错误。

意思就是说,默认情况下,webpack 处理不了 CSS 的东西。

我们来处理这个问题。

$ npm install --save-dev css-loader style-loader

webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/app.js', output: { path: __dirname + '/dist', filename: 'app.bundle.js' }, plugins: [new HtmlWebpackPlugin({ template: './src/index.html', filename: 'index.html', minify: { collapseWhitespace: true, }, hash: true, })], module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } }; 

我们来看下效果:

dist/index.html

编译出的内容跟之前的差不多。

我们用浏览器打开 dist/index.html 文件。

编译出的 app.bundle.js 文件是有包含 CSS 的内容的。

3. 用 sass-loader 把 SASS 编译成 CSS

应该都知道 SASS 是什么吧,不懂的话可以查一下。

说白了,就是可以用更好的语法来写 CSS,比如用嵌套。看下面的例子应该就会理解的。

把 src/app.css 改名为 src/app.scss

src/app.scss

body {background: pink; p { color: red; } } 

src/index.html

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Hello World</title> </head> <body> <p>hello world</p> </body> </html> 

src/app.js

import css from './app.scss'; console.log("hello world"); 

安装(中间可能要下载二进制包,要耐心等待)

$ npm install sass-loader node-sass --save-dev

webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/app.js', output: { path: __dirname + '/dist', filename: 'app.bundle.js' }, plugins: [new HtmlWebpackPlugin({ template: './src/index.html', filename: 'index.html', minify: { collapseWhitespace: true, }, hash: true, })], module: { rules: [ { test: /\.scss$/, use: [ 'style-loader', 'css-loader', 'sass-loader' ] } ] } }; 

效果如下:

4. 用 extract-text-webpack-plugin 把 CSS 分离成文件

有时候我们要把 SASS 或 CSS 处理好后,放到一个 CSS 文件中,用这个插件就可以实现。

$ npm install --save-dev extract-text-webpack-plugin

webpack.config.js

var HtmlWebpackPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); module.exports = { entry: './src/app.js', output: { path: __dirname + '/dist', filename: 'app.bundle.js' }, plugins: [new HtmlWebpackPlugin({ template: './src/index.html', filename: 'index.html', minify: { collapseWhitespace: true, }, hash: true, }), new ExtractTextPlugin('style.css') ], module: { rules: [ { test: /\.scss$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', //resolve-url-loader may be chained before sass-loader if necessary use: ['css-loader', 'sass-loader'] }) } ] } }; 

在 dist 目录下生成了 style.css 文件。

dist/style.css

body {background: pink; } body p { color: red; } 

dist/index.html

先说这么多吧。

转载于:https://www.cnblogs.com/yc-braveheart/p/8462265.html

webpack 3 零基础入门教程 #6 - 使用 loader 处理 CSS 和 Sass相关推荐

  1. webpack 3 零基础入门教程 #13 - 生产环境 vs 开发环境

    接着上一节来,我们要解决上一节所遇到的一个问题. 上一节提到,要让生产环境使用 extract-text-webpack-plugin 这个插件,而开发环境不使用,如何做到呢? 其实原理很简单,只要能 ...

  2. webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js

    在命令行中运行 webpack 命令确实可以实现 webpack 的功能,但是我们一般不这么做,我们要用配置文件来处理. 我们把之前学到的知识用 webpack 的配置文件来实现,配置文件的名字叫 w ...

  3. webpack 3 零基础入门教程 #12 - 如何使用模块热替换 HMR 来处理 CSS

    模块热替换 是什么意思? 以前我们使用的 webpack --watch 或 webpack-dev-server 的功能是监听文件改变,就自动刷新浏览器,而这个 模块热替换 不用刷新浏览器,它是只让 ...

  4. python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)

    一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...

  5. 视频教程-Python零基础入门教程-Python

    Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...

  6. SEO零基础入门教程(外链的发布和软文编写)

    seo的作用是众所周知的,对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo ...

  7. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  8. 计算机pscs6教程,photoshop CS6零基础入门教程

    <photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...

  9. finereport自学教程_办公物语丨Finereport零基础入门教程,你不可缺少的报表神器...

    原标题:办公物语丨Finereport零基础入门教程,你不可缺少的报表神器 ⌛ 小办又来了,快,搬好你的小板凳. 今天小办要着重讲一下 之前推文里提到过的制表神器. 当你逐渐发现Excel不能满足你的 ...

最新文章

  1. 方舟 game.ini 配置文件_方舟突然回归|这次居然是住院篇!
  2. 【收藏】SonarQube-插件-离线安装PMD+阿里P3C
  3. javaweb学习总结(十九)——JSP标签
  4. 项目启动,数据库连接错误:SQLNonTransientConnectionException: Could not create connection to database server
  5. SecureCRT连接CentOS阿里云,小键盘在VIM情况下,无法输入数字反而出现英文
  6. 车辆入库java程序_java扫描入库及出库,基于谷歌类开发.仅提供完整代码 连接SQL使用,...
  7. 雅虎年底升级IPv6标准 100万用户恐受影响
  8. PXE+Kickstart无人值守安装CentOS 7出现DHCP故障解决报告
  9. GET POST 传值与接收案例
  10. WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
  11. hololens与混合现实开发pdf_增强现实与虚拟现实:过去和未来
  12. Android Studio创建侧滑菜单使用心得
  13. 解决CAD输出PDF字体周围有边框
  14. mysql创建视图注意事项_mysql视图创建注意事项(转)
  15. 有python基础学java要多久_零基础自学Java要多久
  16. 江苏智慧公厕:让厕所成为城市新名片
  17. 从C到C++ 番外const的用法
  18. 全职ui设计师岗位需要具备哪些工作技能
  19. Nature新子刊创刊首发综述论文:这是你常听到的贝叶斯统计与建模
  20. Java 版 Prim 算法求最小生成树

热门文章

  1. oracle 39170,39170-1134
  2. php自动加载机制简述,PHP自动加载机制实例详解
  3. 布尔盲注怎么用,一看你就明白了。布尔盲注原理+步骤+实战教程
  4. [SDOI2011]工作安排 BZOJ2245
  5. 第十章:SpringCloud Zuul路由器和过滤器
  6. 如何快速掌握man手册的使用
  7. 使用定时器判断确保某个标签有值才执行方法, 控制js代码执行先后顺序
  8. hibernate 多对多注解配置
  9. bankeralgorithm.jar中没有主清单属性_怀旧服:迅击指环和其拉之怒属性一致,为何狂暴战用迅击更好...
  10. python(命令行提示符的实现、四位数能组成多少个互不相同重复三位数的实现)