一文大白话讲清楚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']]}}}]
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 日志存储 — 日志索引

每个日志分段文件对应两个索引文件:偏移量索引文件用来建立消息偏移量到物理地址之间的映射;时间戳索引文件根据指定的时间戳来查找对应的偏移量信息。 1 日志索引 Kafka的索引文件以稀疏索引的方式构造消息的索引。它并不保证每个消息在索引文件中都有…

空调可视化监控与管理系统

随着智能化技术的不断发展,空调系统作为现代建筑、工业和商业场所的核心设备,正在从传统管理模式向智能化管理迈进。无论是大型商业楼宇、工业厂房,还是数据中心的精密空调,如何通过智能监控和高效管理降低能耗、提升运行效率&…

用户中心项目教程(五)---MyBatis-Plus完成后端初始化+测试方法

文章目录 1.数据库的链接和创建2.建库建表语句3.引入依赖4.yml配置文件5.添加相对路径6.实体类的书写7.Mapper接口的定义8.启动类的指定9.单元测试10运行时的bug 1.数据库的链接和创建 下面的这个就是使用的我们的IDEA链接这个里面的数据库: 接下来就是输入这个用户…

Mysql InnoDB B+Tree是什么?

“mysql中常用的数据库搜索引擎InnoDB,其索引通过BTree的方式进行构建。” 实在想不起来BTree是怎么一回事了。以点带线,将涉及到的数据结构一起复习一下。 文章目录 数据结构定义红黑树定义使命 BTree定义使命 BTree定义 InnoDB BTree 旋转与调整二叉排序树插入删…

对人型机器人的研究和展望

目录 概述 1 核心软硬件部件 1.1 运动控制部分 1.1.1 减速机 1.1.2 编码器 1.1.3 直流无刷电机 1.2 智能仿生手 1.3 控制板卡 2 人型机器人的应用 3 未来展望 概述 如果现在有人问:当前那个行业最火?毫无疑问答案肯定是人型机器人了。当前各类机…

Flask:后端框架使用

文章目录 1、介绍2、demo演示3、Flask请求和响应 3.1 演示demo3.2 request获取请求体数据3.3 requests发送请求3.4 响应返回和接收 4、特殊路由 4.1 路由重定向4.2 路由拦截器 1、介绍 Flask是由python语言编写的轻量级Web应用框架,主要应用于后端框架&#xff…

递归算法学习v2.3

目标和 设置全局变量: class Solution {int ret,path,aim;public int findTargetSumWays(int[] nums, int target) {aim target;dfs(nums,0);return ret;}public void dfs(int[] nums,int pos){if(pos nums.length){if(path aim){ret ;}return;}path nums[pos…

ui设计公司分享:浅色 UI 设计

在数字化产品琳琅满目的今天,用户对于界面的要求早已不止于功能的实现,更追求一种舒适、无压的交互体验。而浅色UI设计,凭借其独特的魅力,正逐渐成为众多设计师营造优质体验的首选。 一、浅色UI设计的视觉优势 (一&a…

Nacos:使用PgSQL数据源

数据源插件开源仓库地址:nacos-datasource-extend-plugins 一、PostgreSQL数据库安装 1、本文使用Docker进行数据库的安装,使用docker命令拉取的PG14版本的数据库: docker pull postgres:14.6 2、创建PG容器并启动,映射了5432…

Linux——入门基本指令汇总

目录 1. ls指令2. pwd3. whoami指令4. cd指令5. clear指令6. touch指令7. mkdir指令8. rm指令9. man指令10. cp指令11. mv指令12. cat指令13. tac指令14. more指令15. less指令16. head指令17. tail指令18. date指令19. cal指令20. find指令21. which指令22. alias指令23. grep…

C语言之装甲车库车辆动态监控辅助记录系统

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 (一)…

2024年Vue面试题汇总

流程图如下: vue核心知识——语法篇 1.请问 v-if 和 v-show 有什么区别? 相同点: 两者都是在判断DOM节点是否要显示。 不同点: a.实现方式: v-if是根据后面数据的真假值判断直接从Dom树上删除或重建元素节点。 v-…

centos搭建 Node.js 开发环境

Node.js ,通常简称为Node,是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Chrome V8引擎,具备速度快、性能强等特点,可用于搭建各类网络应用,及作为小程序后端服务环境。npm 和 npx 都是和 Node.js 相关的…

DuckDB:精通Insert语句处理数据冲突

本文介绍DuckDB insert语句用法,包括常规的批量插入,尤其是插入数据冲突的处理,最后还提及returning子句的用法,每个用法提供示例说明。 insert插入数据 INSERT INTO向表中插入新行。可以插入由值表达式指定的一行或多行&#xf…

【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)

inode 和 block 的映射 该博文中有详细解释:【Linux系统】inode 和 block 的映射原理 目录与文件名 这里有几个问题: 问题一: 我们访问文件,都是用的文件名,没用过 inode 号啊? 之前总是说可以通过一个…

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用

SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用 文章目录 SpringBoot实现定时任务,使用自带的定时任务以及调度框架quartz的配置使用一. 使用SpringBoot自带的定时任务(适用于小型应用)二. 使用调度框架…

flutter 使用google_mlkit_image_labeling做图片识别

在AI横行的如今,相信大家或多或少都做过跟AI接轨的需求了吧?今天我说的是关于图片识别的需求,flutter的专属图片识别插件google_mlkit_image_labeling。 google_mlkit_image_labeling它是Google旗下的Google Cloud Vision API中分支出来的一部…

国产编辑器EverEdit - 合并行

1 合并行 1.1 应用场景 在编写代码或其他场景下,有时需要把多行的内容缩减成一行,或者纯粹减少行数进行合并,比如:下面的字典的定义,每个元素占了一行,有点浪费,现在需要把它们缩减行数。 typ…

3 前端(中):JavaScript

文章目录 前言:JavaScript简介一、ECMAscript(JavaScript基本语法)1 JavaScript与html结合方式(快速入门)2 基本知识(1)JavaScript注释(和Java注释一样)(2&am…

RIME-CNN-LSTM-Attention多变量多步时序预测Matlab实现

SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-LSTM-Multihead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-LSTM-Multihead-Attention霜冰算法…