(03)vite 处理 css

news2025/1/11 18:51:18

文章目录

    • 系列全集
    • vite 处理css流程
    • vite如何解决协同开发,样式重复覆盖的问题?
    • 使用less
    • 通过配置,更改vite的css默认行为

在这里插入图片描述

系列全集

(01)vite 从启动服务器开始
(02)vite环境变量配置
(03)vite 处理 css

vite 处理css流程

vite 天生就支持对css文件的处理,主要的处理流程如下。

  1. vite读取到main.js中引用到了index.css
  2. 通过fs模块去读取index.css文件的内容
  3. 直接创建一个style标签,将index.css中的文件内容直接copy进style标签中
  4. 将style标签插入到index.html的head中
  5. 将该css文件中的内容直接替换为hs脚本(方便热更新或者css模块化)

创建一个index.css文件

* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

将其引入main.js中

import { count } from "./counter.js";
import "./index.css"

console.log(count);

启动vite服务器

yarn dev 或者yarn vite

将css的内容注入style标签,放置到head标签里
在这里插入图片描述

原本index.css的文件被替换了
在这里插入图片描述

vite如何解决协同开发,样式重复覆盖的问题?

使用css module css模块化

  1. css模块化是 以 module.css 结尾的文件,这是css开启模块化的标志。
  2. xxx.module.css里面所有的样式名称进行一定规则的替换(增加hash字符串,比如footer 替换为 _footer_123st)
  3. 同时创建一个映射对象 {footer: '_footer_123st'}
  4. 将替换后的内容塞进style标签里然后放入head标签中。
  5. 将原本的xxx.module.css内容全部抹除,替换成对应js脚本。
  6. 将创建的映射对象在脚本中默认导出

分别创建 一下文件
在这里插入图片描述

componentA index.module.css 配置

.footer {
    width: 100vw;
    height: 300px;
    background-color: aquamarine;
}

componentB index.module.css 配置

.footer {
    width: 100vw;
    height: 300px;
    background-color: yellowgreen;
}

componentA index.js

import componentAcss from "./index.module.css"

const div = document.createElement("div");

div.className = componentAcss.footer;

document.body.appendChild(div)

componentB index.js

import componentBcss from  "./index.module.css"

const div = document.createElement("div");

div.className = componentBcss.footer;

document.body.appendChild(div)

在main.js中全部引入

import "./index.css"
import "./index.less"
import './src/componentA/index.js'
import './src/componentB/index.js'

启动服务器之后,发现css module的类名都被替换了,加了hash
在这里插入图片描述

在这里插入图片描述

使用less

有的时候我们需要使用css预编译器,比如less

创建index.less文件

body {
    background-color: yellow;
}

在main.js中引入

import { count } from "./counter.js";
import "./index.css"
import "./index.less"
console.log(count);

启动vite服务器后,报错
在这里插入图片描述
提示我们需要安装less依赖,less属于开发依赖,

yarn add -D less 或者 npm install less -D

重启服务器后就能正常解析less了
在这里插入图片描述

通过配置,更改vite的css默认行为

import { defineConfig } from "vite";

export default defineConfig({
  css: {
    // 会丢给postcss module 去配置  https://github.com/madyankin/postcss-modules
    modules: { // 只针对模块化的样式
      scopeBehaviour: "local", // 配置当前的css样式的行为是local模块化,还是global全局化,有hash就是开启模块化,因为它可以保证不同的模块相同类名不重复。
      // generateScopedName: "[name]__[local]___[hash:base64:5]", // 自定义生成名字的规则 更多配置 https://github.com/webpack/loader-utils#interpolatename
      generateScopedName:(name,filename,css) => {
        // name css文件的类名
        // filename 当前css的绝对路径
        // css 当前给定的样式
        return `${name}_${Math.random() * 100}`
      },
      localsConvention: "camelCaseOnly", // 修改生成的配置对象的展示形式,驼峰/划线/中划线形式
      hashPrefix: "", // 补充的hash前缀,会参与到生成的类名中
      globalModulePaths: [""] // 导入了第三方样式时,或某些不希望module.css模块化hash时,使用这个globalModulePaths,填入css模块化的路径。
    },
    preprocessorOptions: {// 预处理的配置
      less: { // 更多less全局配置 https://less.bootcss.com/usage/#lessjs-options
        math: "always",
        globalVars: { // 配置less的全局变量,
          greenColor: "#008000",
        }
      }
    },
    devSourcemap: true // 开发中能够快速找到某样式对应的样式文件
  }
});

css开启 devSourcemap 后,能够快速找到每一个样式对应的文件名,但最好只在开发环境中使用,

在这里插入图片描述
不开启devSourcemap 时,一般是上生产环境,默认情况下也是不开启的。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

助力业务协同:品牌商与经销商ERP系统的完美对接

助力业务协同:品牌商与经销商系统的完美对接 品牌方全链路数字营销系统的目的是为了提升营销效率、实现一致的品牌形象、深化用户洞察、加强与经销商合作以及提升营销效果评估。建立统一的数字营销平台可以帮助品牌方更好地管理和整合各个渠道上的营销活动&#xff…

Bishop新著 - 深度学习:基础与概念 - 前言

译者的话 十几年前,笔者在MSRA实习的时候,就接触到了Christopher M, Bishop的经典巨著《Pattern Recogition and Machine Learning》(一般大家简称为PRML)。Bishop大神是微软剑桥研究院实验室主任,物理出身,对机器学习的基本概念…

【C++11/线程相关】thread类编写多线程、mutex互斥锁和lock_guard、atomic原子类型

目录 通过thread类编写C多线程程序线程间互斥——mutex互斥锁和lock_guardmutex互斥锁lock_guard 线程间通信C11实现生产者与消费者模型 基于CAS操作的atomic原子类型 橙色 通过thread类编写C多线程程序 为什么结果没有子线程中所打印的字符串呢?因为通过detach进…

语音合成与配音工具(视频配音、微课配音、有声读物、产品营销)

在数字时代,语音技术的崛起正在改变我们与技术互动的方式。现在,我给大家介绍一款很赞的工具——AI文字转语音配音神器,为您的文字赋予生动、自然的声音,全新的沉浸式体验即将改变您的创作方式!非常适合用于视频配音、…

LeetCode | 572. 另一棵树的子树

LeetCode | 572. 另一棵树的子树 OJ链接 我们需要判断两棵二叉树是否相同,如果再判断的的时候不同我们就直接返回false,否则就返回true然后再检查左子树和右子树里面是否存在subRoot子树~~ bool isSameTree(struct TreeNode* q, struct TreeNode* p) {…

音频录制软件哪个好?帮助你找到最合适的一款

音频录制软件是日常工作、学习和创作中不可或缺的一部分。选择一个适合自己需求的录音软件对于确保音频质量和提高工作效率至关重要。可是您知道音频录制软件哪个好吗?本文将深入探讨两种常见的音频录制软件,通过详细的步骤指南,帮助您了解它…

软件设计中如何画各类图之四探索类图:揭示软件系统的静态结构

目录 1 前言2 类图的符号及说明2.1 类(Class)2.2 属性(Attributes)2.3 方法(Methods)2.4 关系(Relationships) 3 画类图的步骤3.1 确定系统范围3.2 识别类3.3 建立类之间的关系3.4 细…

oops-framework框架 之 界面管理(三)

引擎: CocosCreator 3.8.0 环境: Mac Gitee: oops-game-kit 注: 作者dgflash的oops-framework框架QQ群: 628575875 回顾 在上文中主要通过oops-game-kit大家了一个新的模版项目, 主要注意项是resources目录下的两个文…

leetcode 201 数字范围按位与

leetcode 201 题目题解代码 题目 给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left、right 端点)。 具体示例如下: 题解 本题是一个在思维上的方法,不…

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例

HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例 声明式 UI ArkTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑。 如果组件的接口定义没有包…

Git:分布式版本控制系统的崛起与演变

简介 Git是一个开源的分布式版本控制系统,旨在有效、高速地处理从很小到非常大的项目版本管理。它是由Linus Torvalds于2005年创建的,最初是为了服务于Linux内核开发的版本控制需求。Git通过强大的分支功能、高效的缓存机制以及可扩展的架构设计&#xf…

实验六 单脉冲触发中断实验(汇编与微机原理)

实验目的: 掌握可编程中断控制器8259一般的使用方法。 掌握8259初始化的编程方法及中断服务程序的编写方法,中断程序的调试方法。 实验内容: 用单脉冲按钮的正脉冲输出作为中断控制器8259的中断源产生中断请求,在中断服务程序…

启动微服务idea控制台配置及样式

启动微服务idea控制台配置及样式 1. view —> tool windows —> services 2.控制台样式,下载插件 Grep Console ,可在设置中设置颜色

element 弹窗在弹出后鼠标还可以点击页面其他元素

文章目录 需求分析需求 如下图所示,在点击弹出弹框后,支持 鼠标可点击弹框外的其他地方可拖拽弹框弹出弹出后不可有遮挡弹出样式可自定义 分析 官网:https://vxetable.cn/v4/#/table/start/install 安装 vxe-table 引入import {App, createApp }

全球大模型发展整体态势,暗流涌动下的机遇

原创 | 文 BFT机器人 (一)大模推动能“涌现”,打开AI术发展上限 人工智能大模型,是指通过在海量数据上依托强大算力资源进行训练后能完成大量不同下游任务的模型。 在技术层面上,大模型的实现采用“预训练指令微调人类反馈的强化学习”的训练…

3款技术宅下载神器you-get,DownKyi,Hitomi-Downloader

今天在B站看到一个无水印素材视频,就想着下载下来。原来我一直用硕鼠的,但今天硕鼠官网访问不了。python小工具比较多,搜索一下发现几款不错的下载小工具,推荐给大家。 一、准备工作 很多时候我们要做视频处理,或者视…

记录 | Mac微信双开

目的:在 mac 上微信双开 (1) 先打开并登录第一个微信; 2)访达 -> 应用程序 -> 微信(双指同时摁)-> 显示包内容; 3)依次打开以下⽂件夹 Contents -> MacOS -> 双击 WeChat 即可…

Redis 安装部署

文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装(不推荐,版本老旧)2.1.1、通过源码编译安装(推荐) 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…

开源数据大屏系统介绍

睿思BI数据大屏系统现已开源,通过拖拽配置的方式构建大屏,支持零代码开发。并且包含大量大屏模版,方便用户快速创建大屏应用。 系统主要包括数据准备、大屏设计、权限管理3个部分内容。 1.数据准备 1.1 创建数据源:定义BI系统链…

基于HTML 实现的示波器-含完整源码

完整资料下载连接 基于HTML 实现的示波器-含jshtmlcss完整源码 改源码是在桌面 PC 上设计的,分辨率为 1920 x 1080 像素,但宽高像素比为 1.4 到 1.6 的任何分辨率都将产生良好的图像。它适用于以下浏览器的最新版本:Internet Explorer、Edge、…