Vue3 组件中使用 SCSS 变量

在 JavaScript 中不能直接使用 SCSS 变量。但是可以通过一些间接的方法来实现类似的效果。

一、使用 sass-extract

使用 sass-extract 库来提取 SCSS 变量并生成 JSON 文件,然后在 JavaScript 中读取这个 JSON 文件来获取变量值。

1. 安装 sass-extract

bash 复制代码
npm install sass-extract --save-dev

2. 在项目的根目录创建一个 extract-vars.js 文件

这个脚本会读取`./src/styles/main.scss`文件中的 SCSS 变量,并将它们输出到`./src/variables.json`文件中。

javascript 复制代码
const sassExtract = require("sass-extract");

const extractor = sassExtract();



extractor.loadFile("./src/styles/main.scss");

const variables = extractor.vars();

const fs = require("fs");



fs.writeFileSync("./src/variables.json", JSON.stringify(variables, null, 2));

3. 在你的 JavaScript 文件中引入生成的 JSON 文件

javascript 复制代码
const variables = require("./variables.json");



console.log(variables["$primary-color"]); // 假设在 SCSS 中有一个 $primary-color 变量

这种方法需要在构建过程中运行`extract-vars.js`脚本,以确保变量 JSON 文件是最新的。

二、使用 xxx.module.scss

定义 xxx.module.scss 文件, 使用 :export { // ... } 导出 scss 变量给 Vue3

1. 定义 theme.module.scss

css 复制代码
$color--active: #4f7eff;



:export {

  color--active: $color--active;

}

2. 使用

javascript 复制代码
import themeScss from "@/assets/scss/theme.module.scss";



console.log(themeScss);
相关推荐
一tiao咸鱼1 分钟前
还在手动海投?我做了个 AI 求职助手,自动筛选 BOSS 职位再精准投递
前端·后端·面试
尤水就下3 分钟前
🔥预热:在线文档的 block 架构是如何实现的(未完待续...)
前端·javascript·架构
‎ദ്ദിᵔ.˛.ᵔ₎16 分钟前
c++11:fuction包装器
开发语言·c++
kimnoic19 分钟前
Python 爬虫的原理
开发语言·python
Fluxproxy22 分钟前
Python爬虫异步提速终极方案|线程池ThreadPoolExecutor实战,告别单线程慢速爬取
开发语言·爬虫·python
全栈项目管理程序猿26 分钟前
ArcGIS JS 基础教程(29):CSVLayer 表格点位图层
前端·javascript
淡海水36 分钟前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
骑着蜗牛撵大象3271 小时前
豆包 Seed 驱动的记账智能体:从拍票抽取到月报生成的全链路落地记录
java·前端·javascript·结构化输出·豆包seed·多模态识别·记账系统
溪语流沙1 小时前
【Web全栈进阶】前端世界观:现代工具链与框架为什么存在
前端·javascript·vue.js
kyriewen1 小时前
我逐个测了 JSON.stringify 的 7 个坑:第 1 个就在丢数据
前端·javascript·程序员