在【拆分】和【压缩】css代码之前,首先要配置 loader 处理不同的 css 资源,因为 webpack 没有默认可处理 css 资源的规则,具体可参考这一篇 webpack处理css/less资源

style-loader

loader 处理不同类型的 css 资源后通过 style-loader 将css代码添加到 html 文件中,但此时 css 代码并没有生成单独的文件,而是被编译到了 js 文件中。

所以在 html 页面中,css 代码是通过 style 标签创建的,而不是直接引入 css 资源地址。

MiniCssExtractPlugin

当 css 文件较多时,全部打包至 js 文件,会使得 js 文件体积很大,将 css 代码抽离到单独的文件中能减少单个文件的加载压力。可通过 MiniCssExtractPlugin 实现。

安装 mini-css-extract-plugin, 定义 plugin,并用 MiniCssExtractPlugin.loader 替换 style-loader

const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
// 省略其余配置
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader'], // 省略其它loader
      },
    ],
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: './css/[name].css',
      chunkFilename: './css/[name].css',
    }),
  ],
};

编译后的 css 将两个 css 文件代码合到了一起

css 资源被引入到 html 页面中

CssMinimizerWebpackPlugin

MiniCssExtractPlugin 只对 css 代码进行了拆分,压缩需要使用到 CssMinimizerWebpackPlugin

安装 css-minimizer-webpack-plugin 后,在 optimization 属性中配置。

const CssMinimizerWebpackPlugin = require('css-minimizer-webpack-plugin');

module.exports = {
  // 其它配置省略
  optimization: {
    minimizer: [new CssMinimizerWebpackPlugin({})],
  },
};

可以看到压缩后css代码和源代码区别不大,这是因为如果修改选择器和属性名称,很难再与原来的元素对应,会需要增加复杂的处理映射关系的逻辑处理,所以对 css 的压缩主要是去除空格的操作。

总结

  • style-loader 用于创建 style 标签,将 css 代码添加到 html 页面中
  • MiniCssExtractPlugin 会将处理好的 css 代码编译到新的 css 文件中,并在 html 文件中引入
  • CssMinimizerWebpackPlugin 压缩 css 文件中的代码

以上就是拆分和压缩css代码的介绍, 更多有关 webpack 的内容可以参考我其它的博文,持续更新中~

这样拆分和压缩css代码的更多相关文章

  1. gulp 压缩 js 和 css 代码

    我们在写出来的代码都是非常规范的,改换行的时候就换行,改tab 的时候就有tab,还有这样做是为了后期维护方便,但是这也导致了内存占用量的增大,当把把代码发到线上,如果网速慢一点,可能很久都加载不出来 ...

  2. 前端开发必备 40款优秀CSS代码编写工具推荐

    摘要:CSS工具可以简化工作流,可以提高CSS编写速度,是开发者和设计者所不可缺少的.本文列举了40种CSS工具,功能涉及CSS菜单.动画.3D图形.响应式页面.图层.按钮等界面元素的设计与制作,你定 ...

  3. CSS格式化 CSS代码压缩工具

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. gulp压缩css和js

    压缩 css 代码可降低 css 文件大小,提高页面打开速度. 规律转换为 gulp 代码 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下.一. ...

  5. 使用 gulp 压缩 CSS

    请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 压缩 css 代码可降低 css 文件大小,提高页面打开速度. 我们接着将规律转换为 gulp 代码 规律 ...

  6. 20 个让你效率更高的 CSS 代码技巧

    在这里想与你分享一个由各大CSS网站总结推荐的20个有用的规则和实践经验集合.有一些是面向CSS初学者的,有一些知识点是进阶型的.希望每个人通过这篇文章都能学到对自己有用的知识. 1.注意外边距折叠 ...

  7. 25个强大的CSS代码,据说这些是开发者经常遇到比较棘手的代码

    这些代码是经常用到的,比方说一些特殊的效果,圆角边框,CSS透明度,梯形环绕,CSS小三角等,希望对你有用 1简单又好的 Blockquote 样式 CSS代码如下 blockquote { back ...

  8. js、css动态压缩页面代码

    1.js.css动态压缩页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...

  9. 自写脚本实现上线前本地批量压缩混淆 js , css 代码。

    最近做项目遇到一个要求,就是把本地的 js 和 css 进行压缩后再上线,由于之前项目并没有使用 webpack 之类的库,项目上也因为一些机密不能在线上压缩,这无疑给代码打包压缩带来了很大麻烦,于是 ...

  10. 使用Ant和YUICompressor链接合并压缩你的JS和CSS代码

    JS代码和CSS代码在上线前要压缩大家应该都是知道的了.记得之前做项目的时候,最后要交差的时候是找了个网站,将JS代码的文件一个一个地复制,粘贴,复制,粘贴. 当时就在想:TMD有没有好一点的方法,劳 ...

随机推荐

  1. 读《图解HTTP》

    最近读了一本书<图解HTTP>,读完后在大体上对HTTP协议有了更深层次的了解.以下是我以前不懂的问题,通过阅读此书后,这些问题都有了答案: 问题: URI和URL的区别? cookie到 ...

  2. selenium web控件的交互进阶

    Action ActionChains: 执行PC端的鼠标点击,双击,右键,拖曳等事件 TouchActions: 模拟PC和移动端的点击,滑动,拖曳,多点触控等多种手势操作 动作链接 ActionC ...

  3. SSL 证书安装使用中遇到的常见问题

    为了实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或篡改,SSL证书已被各政企网站广泛应用.然而在部署和使用SSL证书的过程中,我们经常会遇到一些措手不及的问题,一旦处理不当,就会让网 ...

  4. 2022-11-09:给定怪兽的血量为hp 第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果 第i回合如果用毒,怪兽在这回合不会掉血, 但是之后每回合都会掉血,并且所有中毒的后续效果会叠加 给

    2022-11-09:给定怪兽的血量为hp 第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果 第i回合如果用毒,怪兽在这回合不会掉血, 但是之后每回合都会掉血,并且所有中毒的后续效果会叠加 给 ...

  5. mac系统下,docker安装kibana报错,manifest for kibana:latest not found: manifest unknown: manifest unknown

    1.问题描述:mac系统下,docker安装kibana报错,manifest for kibana:latest not found: manifest unknown: manifest unkn ...

  6. 2021-08-18:扰乱字符串。使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止。2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串

    2021-08-18:扰乱字符串.使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止.2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将 ...

  7. 2021-10-03:合并两个有序数组。非递减数组nums1和nums2。合并这两个数组并放在nums1中。力扣88。

    2021-10-03:合并两个有序数组.非递减数组nums1和nums2.合并这两个数组并放在nums1中.力扣88. 福大大 答案2021-10-03: 从右往左遍历nums1和nums2,谁大拷贝 ...

  8. 2021-09-06:给表达式添加运算符。给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回所有

    2021-09-06:给表达式添加运算符.给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+.- 或 * ,返回所有 ...

  9. lec-1-Deep Reinforcement Learning, Decision Making, and Control

    What is RL 基于学习的决策的数学形式 从经验中学习决策和控制的方法 Why should we study this now 深度神经网络特征方法 强化学习的提升 计算能力的提升 我们还需要 ...

  10. 【python基础】if语句-条件测试

    1.初识if语句 编程时经常需要检查一系列条件,并据此决定采取什么措施.在Python中,使用if语句能够检查程序的当前状态,并据此采取相应措施. 其语法格式之一: 假设有一个学员名单的列表,想将其中 ...