hgq's docs
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)

guoguoqiqi

漫不经心的向往
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)
  • webpack是什么、为什么选择它
  • webpack中module、chunk和bundle的概念
  • 说一下在webpack中的loader和plugin的不同
  • webpack 三种hash的区别
  • webpack基本核心概念
  • webpack工作机制
  • 常用的Loader
  • 常用的Plugin
  • webpack配置与优化实践
  • webpack热更新原理
  • 如何配置webpack热更新
  • 如何提升webpack构建速度
  • babel中polyfill的作用
  • npm和yarn的对比
  • 如何减小打包体积提高页面加载速度
  • 介绍SourceMap
  • 搭建一个前端工程
  • 自定义loader
  • 自定义plugin
  • 相关面试题集合
  • 相关文档网站
  • 对比一下webpack、vite、rollup等构建工具.md
  • loader、plugin的区别,以及编写的思路
  • css-loader和style-loader的区别
  • url-loader和file-loader的区别
  • webpack代码分割和公共代码提取
  • Webpack
guoguoqiqi
2022-04-23

css-loader和style-loader的区别

webpack是用JS写的,运行在node环境,所以默认webpack打包的时候只会处理JS之间的依赖关系。

因为像 .css 这样的文件不是一个 JavaScript 模块,你需要配置 webpack 使用 css-loader 或者 style-loader 去合理地处理它们。

如果在JS中导入了css,那么就需要使用 css-loader 来识别这个模块,通过特定的语法规则进行转换内容最后导出。

css-loader会处理 import / require @import / url 引入的内容。

// base.css
.bg {
  background: #000;
}
1
2
3
4
const style = require('./base.css')
console.log(style, 'css')
1
2

css-loader处理之后导出的是

image

但是这并不是我们想要的,因为是个数组,页面是无法直接使用,这时我们需要用到零外一个style-loader来处理。

style-loader 是通过一个JS脚本创建一个style标签,里面包含一些样式。style-loader是不能单独使用的,应为它并不负责解析 css 之前的依赖关系,每个loader的功能都是单一的,各自拆分独立。

const path = require('path')

module.exports = {
  entry: './src/index.js',
  mode: 'development',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: 'style-loader'
          },
          {
            loader: 'css-loader'
          }
        ]
      },
      {
        test: /\.(png|svg|jpe?g)$/i,
        loader: 'url-loader',
        options: {
          esModule: false
        }
      },
      {
        test: /\.(woff|woff2|eot|ttf|otf)$/i,
        loader: 'file-loader',
        options: {
          esModule: false
        }
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# 总结

由于webpack只能处理js相关的文件,所以像图片和css资源是处理不了的,css-loader的作用是将css文件转换成webpack能够处理的资源,而style-loader就是帮我们直接将css-loader解析后的内容挂载到html页面当中。

← loader、plugin的区别,以及编写的思路 url-loader和file-loader的区别→

最近更新
01
vuex数据持久化怎么做
05-22
02
vue的动态路由怎么配置使用
05-22
03
vue权限控制一般怎么做
05-22
更多文章>
Theme by Vdoing | Copyright © 2022-2022 Guoquoqiqi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式