一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

1. 建议按文章顺序从头看是看

  • 第一篇:
  • 一文大白话讲清楚啥是个webpack
  • 第二篇:
  • 一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建
  • 然后看本篇,Loader的配置和使用

2. Loader的配置和使用

  • 上一篇文章我们完成了基本的webpack构建,让index.html和main.js关联起来,并成功的在浏览器里面运行了index.html,控制台打印出来了5
  • 这篇讲Loader,先简单回忆一下,Loader的作用就是把非js模块的文件进行转换和处理,以便于webpack能对其像js模块那样完成构建打包
  • 那我们先讲啥呢,当然是CSS,HTML+CSS+javascript那是绝配么
  • 我们上节写了html和js,但没写css,现在我们想加上css样式
  • 我们在src目录下新建一个文件夹stylesheet,用来存放我们的css文件,然后里面创建一个index.css

2.1 css-loader

  • 假设我们希望在index.html上插入一个p标签,给p标签挂上一个class,名字叫’p-loader-css’,设置p标签的字体和颜色
  • 于是我们在index.css里面写样式
.p-loader-css{
    font-size:18px;
    color:red
}
  • 定义好样式后,我们在main.js里面创建p标签,并挂在样式
import './stylesheet/index.css'
let p=document.createElement('p')
p.className='p-loader-css'
p.textContent='我是p标签的样式,通过loader处理后被构建'
document.body.appendChild(p)//把p标签插入body里面
  • 这样就完成了p标签的创建和样式添加
  • 我们老规矩,npm运行一下
npm run build
  • 我们可以看到,终端报了一个错误
    在这里插入图片描述

  • 大概意思就是模块转换失败,你可能需要一个loader来处理这类型的文件,目前没有这样的loader可以处理这样的文件,不过好在最后还是打包了,我们运行了一下再说
    在这里插入图片描述

  • 可以发现也是报了同样的错误

  • 为什么呢,因为我们说了,webpack只能对js模块进行构建处理,css模块搞不了,所以需要一个loader来协助处理,那就是css loader

  • css-loader主要处理样式文件中的import和url等语句,不负责将样式注入到HTML页面中,干这个活的另有他人,就是style-loader,负责把转换后的css模块注入到HTMl页面中

  • 所以我们现在需要两个loader来处理上述的问题

  • 先安装

npm install css-loader style-loader
  • 然后再webpack.config.js里面配置loader
module:{//要处理的模块
    roules:[//不同的规则处理不同的文件,所以是一个数组,每个数组的元素是一个规则对象
        {
            test:/\.css$/,//匹配后缀为css的文件,匹配到是使用这条处理规则
            use:['style-loader','css-loader']//这里有点类似函数式编程,从后往前加载执行
        }
        
    ]
}

在这里插入图片描述

  • 配置完我们再次构建
npm run build
  • 发现构建成拱了,我们在浏览器里面运行一下index.html
    在这里插入图片描述

  • 发现css样式添加进来了

  • OK

  • 但是有些情况下我们在开发的时候使用了css预编译语言怎么办呢,不懂预编译语言的,看我这篇文章一文大白话讲清楚CSS预编译语言,包括Sass,Scss,Less,Stylus

  • 没关系,就是再多一个loader的事,假设我们用了scss吧,那就是先把Scss用scss-loader转css,然后用css-loader将css处理,在通过style-loader注入

2.2 sass-Loader

  • 那好,我们在stylesheet目前下新建一个index.scss文件,为刚才的p标签加上红色的边框
$color:red;
.p-border{
    border:2px solid $color;
}
  • 然后再main.js里面引入index.scss,并给p标签挂载类
import './stylesheet/index.scss'
p.classList.add('p-border')

在这里插入图片描述

  • 然后下载scss-loader和sass
npm install sass-loader sass
  • 然后再webpack.config.js里面配置scss-loader
module:{//要处理的模块
    roules:[//不同的规则处理不同的文件,所以是一个数组,每个数组的元素是一个规则对象
        {
            test:/\.css$/,//匹配后缀为css的文件,匹配到是使用这条处理规则
            use:['style-loader','css-loader']//这里有点类似函数式编程,从后往前加载执行
        },
        {
            test:/\.scss$/,//匹配后缀为scss的文件
            use:['style-loader','css-loader','sass-loader']
        }
        
    ]
}
  • 配置完我们再次构建
npm run build
  • 允许index.html,发现边框加上了
    在这里插入图片描述

  • 这就OK了

  • 这还有一个问题,就是有时候css3的新属性在一些浏览器上不支持,我们需要加一下前缀保证兼容性,比如加上-webkit-这样的前缀。我们这就需要另外一个postcss-loader和postcss-preset-env

2.3 postcss-Loader和postcss-preset-env

  • 我们安装
npm install postcss-loader postcss-preset-env
  • 然后进行配置
 {
    test:/\.scss$/,//匹配后缀为scss的文件
    use:['style-loader','css-loader','sass-loader',{
           loader:'postcss-loader',
           options:{
               postcssOptions:{
                   plugins:[
                       ['postcss-preset-env']
                   ]
               }
           }
      }]
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956280.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…

Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘

准备 Ubuntu 24.04 LTSUbuntu 空闲硬盘挂载Ubuntu 安装 Docker Desktop [我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。 安装 seafile 参考资料 Docker安装 Seafile OnlyOffice 并配置OnlyOffice到Seafile,实现在线编辑…

科研绘图系列:R语言绘制多种图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图输出画图2画图3画图4画图5系统信息介绍 科研绘图系列:R语言绘制多种图形(multiple plots) 加载R包 library(tidyverse) library(RColo…

【Elasticsearch入门到落地】6、索引库的操作

接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试,本篇我们来学习ElasticSearch的索引库的操作,学习mapping映射属性以及CRUD操作。 一、前情回顾 我们在前几篇学习了ElasticSearch的基本概念,并动手搭建了ElasticSearch环…

Android系统开发(十五):从 60Hz 到 120Hz,多刷新率进化简史

引言 欢迎来到“帧率探索实验室”!今天,我们要聊聊 Android 11 中对多种刷新率设备的支持。你可能会问:“这和我写代码有什么关系?”别急,高刷新率不仅仅让屏幕更顺滑,还会直接影响用户体验。想象一下&…

Java Web开发高级——性能优化与高可用性设计

在现代Web开发中,性能优化和高可用性设计是保障用户体验和业务连续性的重要环节。本文围绕以下三个方面展开:Web应用性能瓶颈分析与优化、数据库连接池与缓存优化、高可用架构设计与负载均衡。通过结合最新技术方案,帮助开发者在实际场景中构…

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…

论文速读|NoteLLM: A Retrievable Large Language Model for Note Recommendation.WWW24

论文地址:https://arxiv.org/abs/2403.01744 bib引用: misc{zhang2024notellmretrievablelargelanguage,title{NoteLLM: A Retrievable Large Language Model for Note Recommendation}, author{Chao Zhang and Shiwei Wu and Haoxin Zhang and Tong Xu…

Windows 上安装 MongoDB 的 zip 包

博主介绍: 大家好,我是想成为Super的Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 近期专注: RPA应用研究,主流厂商产…

《Vue3 九》动画

Vue 提供了一些内置组件和对应的 API 来完成动画&#xff0c;利用它们可以方便地实现动画效果。 <transition> 内置组件&#xff1a; Vue 提供了 <transition> 内置组件&#xff0c;可以给任意元素或组件添加进入/离开时的动画效果。在条件渲染、动态组件、改变 …

C语言进阶习题【1】指针和数组(4)——二维指针

4. 二维指针练习&#xff08;sizeof&#xff09; 二维数组名和&二维数组名 二维数组名&#xff0c;指的是第一行的地址&#xff0c;1会跳过第一行 &二维数组名&#xff0c;指的是整个数组地址 1会跳过整个数组 4.1代码验证 #include<stdio.h> #include<strin…

2024年最新ComfyUI汉化及manager插件安装详解!

前言 在ComfyUI文生图详解中&#xff0c;学习过如果想要安装相应的模型&#xff0c;需要到模型资源网站&#xff08;抱抱脸、C站、魔塔、哩布等&#xff09;下载想要的模型&#xff0c;手动安装到ComfyUI安装目录下对应的目录中。 为了简化这个流程&#xff0c;我们需要安装Co…

Mysql常见问题处理集锦

Mysql常见问题处理集锦 root用户密码忘记&#xff0c;重置的操作(windows上的操作)MySQL报错&#xff1a;ERROR 1118 (42000): Row size too large. 或者 Row size too large (&#xff1e; 8126).场景&#xff1a;报错原因解决办法 详解行大小限制示例&#xff1a;内容来源于网…

【神经网络基础】

目录 一、神经网络的构成 1.1什么是神经网络&#xff1f; 1.2 激活函数 1.2.1 Sigmoid 1.2.2 Tanh 1.2.3 ReLU 1.2.4 softmax 1.2.5 其他激活函数 1.2.6 选择激活函数 1.3 参数初始化 1.4 模型构建 二、损失函数 2.1 分类问题 2.1.1多分类&#xff08;多分类交叉…

vulnhub靶场【Mr-robot靶机】,分析数据包,根据回显不同进行爆破

前言 靶机&#xff1a;lampiao&#xff0c;IP地址为192.168.10.12 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用虚拟机&#xff0c;网卡为桥接模式 该靶机目前只剩下一个了&#xff0c;之前记得是有两台构成系列的。 文章中涉及的靶机&#xff0c;来源于v…

上一次和英特尔的接触...

大家好啊&#xff0c;我是董董灿。 最近很多人在转发英特尔将被收购的消息&#xff08;真假不知&#xff09;。 被收购对英特尔而言&#xff0c;很悲情。 作为早期通用计算领域的老大哥&#xff0c;在 AI 时代&#xff0c;英特尔意外的被 AI 计算&#xff08;英伟达&#xf…

【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewClause 22/Clause 45Clause 22Clause 45 PHY Link 状态的软件实现 转自&#xff1a; 开心果 Need Car 2022年10月20日 09:50 上海 Overview PHY…

Android设备:Linux远程lldb调试

更多内容&#xff1a;XiaoJ的知识星球 目录 一、环境准备1.1 安装llvm/NDK1.2 开启lldb-server服务1.3 lldb连接lldb-server 二、使用lldb调试Android native源码2.1 运行调试2.2 .lldbinit文件 下面介绍Android设备&#xff08;Android手机为例&#xff09;&#xff0c;在Linu…

力扣动态规划-2【算法学习day.96】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…