【踩坑】TypeScript 中使用 sass 动态设置样式

news2024/11/24 19:42:47

问题

        在从 Vue2 项目转向 Vue3 项目时,不得不将已经封装好的 echarts 图表也升级成 Vue3 适配的版本,遇到了一个有些诡异的问题,在此记录一下。

背景:

      在 Vue2 的项目中,为了动态设置 echarts 的相关配置,于是有这样一个文件:

/* echart theme 主题颜色 字体等 */
$theme:#999999;
//统计图主题色系,主题色系修改,此处应相应修改
$lengendColors:"#409eff","#e6a23c","#67c23a","#d87c7c","#22e4b5","#b6a2de","#e4bc20","#d95850","#74B5F9";
$chartPrimary:rgba(255, 255, 255, 1);
$chartfontSize:12px;
$fontColor:#000000;
$markLineColor:yellow;
$platformColor:#67c23a; //平台类
$projectColor:#e6a23c;  //项目类
$standardColor:#0098d9; //标准工时
$declarationColor:#b6a2de; //申报工时
$chartHeight: 300px;

$success: #67C23A;
$warning: #E6A23C;
$danger: #ED1731;
$info: #909399;

:export {
    theme:$theme;
    lengendColors:$lengendColors;
    chartPrimary: $chartPrimary;
    chartfontSize:$chartfontSize;
    fontColor:$fontColor;
    markLineColor:$markLineColor;
    platformColor:$platformColor;
    projectColor:$projectColor;
    standardColor:$standardColor;
    declarationColor:$declarationColor;
    chartHeight: $chartHeight;
}

        本来,我们是可以正常使用的,跑得动,也可以正常打包发布。按照以下方式使用:

import echart from '../theme/theme.scss'

报错  

      现在,新开了一个 Vue3 项目,在封装 echarts 图表时,依然用了旧项目的那套代码,跑起来一切正常!!!但是呢,一旦打包就会报错!!!报错信息如下:

原因 

      出现这个错误的原因是,我们在 TypeScript 文件中尝试从 .scss 文件中导入内容,但 TypeScript 并不支持直接从 .scss 文件中导入变量或样式。.scss 文件是用于定义 CSS 样式和变量,而 TypeScript 主要用于定义 JavaScript 的类型和逻辑。

解决方法

        可以将 SCSS 变量转换为一个 JavaScript 对象,并在 TypeScript 文件中导入这个对象。这通常需要在构建过程中使用一个工具来提取 SCSS 变量并将其转换为 JavaScript。

        例如,可以创建一个 JSON 文件(或 TypeScript 文件),其中包含了所有的样式变量:

{  
  "theme": "#999999",  
  "lengendColors": ["#409eff", "#e6a23c", "#67c23a", "#d87c7c", "#22e4b5", "#b6a2de", "#e4bc20", "#d95850", "#74B5F9"],  
  "chartPrimary": "rgba(255, 255, 255, 1)",  
  "chartfontSize": "12px",  
  "fontColor": "#000000",  
  "markLineColor": "yellow",  
  "platformColor": "#67c23a",  
  "projectColor": "#e6a23c",  
  "standardColor": "#0098d9",  
  "declarationColor": "#b6a2de",  
  "chartHeight": "300px",  
  "success": "#67C23A",  
  "warning": "#E6A23C",  
  "danger": "#ED1731",  
  "info": "#909399"  
}

        然后在 TypeScript 文件中导入这个 JSON 文件:

import echart from '../theme/theme.json'

        于是!成功解决了问题。 

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

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

相关文章

trie算法

1、定义 高效的存储和查找字符串集合的数据结构 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高 2、构建 我们可以使用数组来模拟实现Trie树。 我们设计一个二维数组 son[N] [26] 来…

WhatsApp收不到验证短信的原因及解决方案

在使用WhatsApp进行账号注册或验证过程中,有时会遇到无法收到验证短信的情况。这种情况可能会给用户带来诸多不便,但通常可以通过一些简单的方法来解决。本文将详细分析收不到验证短信的可能原因,并提供相应的解决方案,帮助用户顺…

LeetCode_sql_day15(262.行程与用户)

描述:262. 行程和用户 - 力扣(LeetCode) 取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。 编写解决方案找出 "2013-10-01" 至 "2013-10-03" 期间非禁止…

EMF矢量图工具Graphpad Prism(棱镜科研绘图工具)

Graphpad Prism 是一款功能强大、专业实用的棱镜科研绘图软件,专为科研工作者而设计研发,可帮助用户进行专业便捷的科研图像绘制,通过该款软件用户可以进行新型子列图进行创建,可以进行平滑的线性图进行绘制,可以说是一…

【汉明距离总和】python刷题记录

R4-数与位篇 class Solution:def totalHammingDistance(self, nums: List[int]) -> int:#创建计数器trieCounter()max_bitlen(bin(max(nums)))-2ret0for i,num in enumerate(nums):for j in range(max_bit):#一位位地取出来bit(num>>j)&1if bit:reti-trie[j]trie[…

同态加密和SEAL库的介绍(一)简介

写在前面: 最近在做同态相关的内容,这里记录下相关的知识点和所踩过的坑,希望对大家有帮助。预计分几篇来详细介绍,从概念简介到不同模式介绍,具体包括了每种模式的编解码和加解密以及他们性能的比对。 虽然同…

MySQL 8.0新特性

文章目录 一. 账户与安全1. 查看用户信息2. 用户权限管理范围3. 用户创建和授权1) 创建并授权用户2)登录zhp,密码zhp.1221。验证数据库权限3)查看用户权限4)撤销用户权限5)用户重命名&修改密码6&#x…

端到端 AWS 定量分析:使用 AWS 和 AWSCLI 自动运行脚本

使用 AWSCLI 启动、运行和关闭 AWS 服务器 添加图片注释,不超过 140 字(可选) 欢迎来到雲闪世界。我们开发了两个 Python 脚本;一个用于为我们获取数据,另一个用于使用 sklearn 的决策树分类器处理数据。然后&#xf…

NAT、服务代理、内网穿透

文章目录 NAT技术NAT IP转换过程NATPNAT的优点NAT的缺点 代理服务器正向代理反向代理 内网穿透和内网打洞内网穿透内网穿透 NAT技术 NAT技术即网络地址转换技术。用于将私有IP地址转换为公共IP地址,以便在互联网或其他外部网络中通信。为了解决IPv4协议下IP地址不足…

【Nacos无压力源码领读】(三) Nacos 配置中心与热更新原理详解超详细解读

本文将从 Nacos 配置中心的基本使用入手, 详细介绍 Nacos 客户端发布配置, 拉取配置, 订阅配置的过程以及服务器对应的处理过程; 配置订阅以及热更新原理相关的部分, 我看了主流的博客网站, 绝对没有比这更详细的讲解; 如果在阅读过程中对文中提到的 SpringBoot 启动过程以及…

交叉编译nginx1.20.0

一、说明 简略写一下过程,仅用于参考,建议与其他交叉编译教程一起看,检查是否有遗漏的问题。 二、源码修改 1、auto/cc/name vi auto/cc/name 注释 21 行 exit 1。 2、auto/types/sizeof vi auto/types/sizeof 将 15 行处的” ngx_size”…

数字图像处理(理论篇)专栏介绍

专栏导读 数字图像处理是计算机视觉领域的基石,它涉及到图像的获取、表示、处理和分析等多个方面。本专栏将通过一系列精心挑选的实战案例,引导读者从基础概念到高级技术,逐步深入学习数字图像处理的各个方面。 专栏目录 数字图像处理 第一…

离线+树状数组,ABC253 F - Operations on a Matrix

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 F - Operations on a Matrix 二、解题报告 1、思路分析 我们通过差分树状数组,可以轻松解决操作1 操作3我们也可以通过树状数组来获取对应列的值 关键是操作2会对操作3造成影响 所以我们先对…

你了解堆和栈的由来吗?

人们提出内存中堆和栈这两个概念,肯定是要解决当时所遇到的问题,不会为了提出概念而提概念。堆和栈都是为了解决一些问题而发展出来的结果,并没有任何的高深之处。 要搞懂堆和栈的概念是如何来的,就需要从计算机诞生时说起了。 …

UE中的运行时Mesh - 学习笔记

UE中的运行时Mesh Runtime Mesh 广泛应用于仿真、游戏及医疗等相关应用领域。 运行时Mesh可以摆脱UE编辑器的依赖,独立开发相对独立的应用程序。 应用示例 地质领域: 模型编辑修改:膨胀 导入、材质设置、补洞及简化: mar…

【Java】韩顺平Java学习笔记 第23章 反射

文章目录 需求和快速入门反射原理反射相关主要类反射的优点和缺点及其优化Class类Class类常用方法获取Class类对象的六种方式有Class对象的类型 类加载动态加载和静态加载类加载时机类加载流程图类加载五个阶段加载阶段连接阶段-验证连接阶段-准备连接阶段-解析总结Initializat…

【Bug记录】operator->返回类型错误导致operator->调用不了

项目场景: 模拟list,出现operator->调用不了的情况,这是什么情况呢??? 问题描述 这里我是明确写了operator->函数的: 但是却有下面报错: 原因分析: 这里有…

python判断和循环语句

python判断语句 1、单个条件判断 if 条件:满足条件要做的事情1满足条件要做的事情2 else:不满足条件要做的事情3不满足条件要做的事情2 2、多个条件判断(满足条件1就不会判断条件2) else可以省略不写 if 条件1:满足条件1要做的事情a满足条件1要做的事…

JavaEE从入门到起飞 (三) ~AOP

晚上好,愿这深深的夜色给你带来安宁,让温馨的夜晚抚平你一天的疲惫,美好的梦想在这个寂静的夜晚悄悄成长。 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 了解面向切面编程(AOP&#xf…

牛客网每日刷题之 HJ99.自守数(C++)

在不断学习的过程中也不能忘记了基础知识的巩固,在学习新的知识后要学会去举一反三,前不久我刚刚了解了一些关于 string 类的知识,对牛客网的 自守数 有了新的解题思路,让我们一起看看这道题吧 思路解析 a. 整数方法 1. 首先我们知…