当前位置: 首页 > news >正文

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

问题

        在从 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'

        于是!成功解决了问题。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 李宏毅老师机器学习常见英语词汇
  • 数值分析【3】
  • 数学建模--蒙特卡洛算法之电子管更换刀片寿命问题
  • 国产芯上运行TinyMaxi轻量级的神经网络推理库-米尔基于芯驰D9国产商显板
  • 【Qt】多种控件实现“hello world“
  • 从今天开始深入学习 SQL 优化
  • 搭建 Web 群集Haproxy
  • 安装pointnet踩坑记录(情绪篇)
  • 学习c语言第24天(练习)
  • 进程状态(二)----- linux 中具体的进程状态(上)
  • 设置临时环境变量
  • utf-8‘ codec can‘t decode byte 0xd3 in position
  • Django ASGI服务
  • 易境通海运系统,让财务对账不再是老大难
  • 使用 1panel面板 部署 springboot 和 vue
  • 【347天】每日项目总结系列085(2018.01.18)
  • css属性的继承、初识值、计算值、当前值、应用值
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Python_网络编程
  • Python打包系统简单入门
  • Spring Cloud Feign的两种使用姿势
  • Unix命令
  • Webpack 4 学习01(基础配置)
  • 从伪并行的 Python 多线程说起
  • 实习面试笔记
  • 双管齐下,VMware的容器新战略
  • 再次简单明了总结flex布局,一看就懂...
  • Semaphore
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1)STL算法之遍历容器
  • (a /b)*c的值
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (力扣)循环队列的实现与详解(C语言)
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)Sublime Text3配置Lua运行环境
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NetCore部署微服务(二)
  • .net开发引用程序集提示没有强名称的解决办法
  • @selector(..)警告提示
  • @SpringBootApplication 包含的三个注解及其含义
  • [20150904]exp slow.txt
  • [20171102]视图v$session中process字段含义
  • [AIGC codze] Kafka 的 rebalance 机制
  • [BT]BUUCTF刷题第4天(3.22)