Vue3+Vite配置SCSS全攻略

安装 SCSS 依赖

在 Vue3 + Vite + Element Plus 项目中配置 SCSS 预处理器,需要安装 sassnode-sass 作为依赖。推荐使用 sass(Dart Sass),因为它是官方维护的版本且性能更好。

npm install sass --save-dev

配置 Vite 支持 SCSS

Vite 默认支持 SCSS,无需额外配置。但若需全局注入 SCSS 变量或混入(mixins),需在 vite.config.js 中配置 css.preprocessorOptions

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/styles/variables.scss" as *;`, // 全局注入变量
      },
    },
  },
});

创建 SCSS 文件结构

建议按功能模块组织 SCSS 文件,例如:

src/
  styles/
    variables.scss      // 全局变量
    mixins.scss         // 混入
    element-variables.scss // Element Plus 主题变量
    index.scss          // 主入口文件

配置 Element Plus 主题

Element Plus 使用 SCSS 变量定义主题。覆盖默认变量需在 element-variables.scss 中修改,并通过 Vite 配置生效。

// element-variables.scss
$--color-primary: #409EFF;
$--font-path: '~element-plus/theme-chalk/fonts';
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
  $colors: (
    'primary': (
      'base': $--color-primary,
    ),
  )
);

vite.config.js 中引入该文件:

css: {
  preprocessorOptions: {
    scss: {
      additionalData: `@use "@/styles/element-variables.scss" as *;`,
    },
  },
}

全局引入 SCSS 文件

main.js 或入口组件中引入全局样式文件:

import '@/styles/index.scss';

模块化使用 SCSS

在 Vue 单文件组件中,通过 <style lang="scss"> 使用 SCSS,并支持模块化:

<style lang="scss" scoped>
@use '@/styles/variables' as *;

.button {
  color: $primary-color;
  @include hover-effect;
}
</style>

优化生产构建

通过 Vite 的构建配置压缩 CSS 并分离文件:

build: {
  cssCodeSplit: true,
  minify: 'terser',
}

常见问题解决

问题1:全局变量未生效
确保 additionalData 路径正确,且变量文件使用 @use 而非 @import

问题2:Element Plus 样式覆盖无效
检查变量文件是否被正确引入,确保变量名与 Element Plus 源码一致。

问题3:SCSS 语法报错
验证 .scss 文件语法,避免混用 @use@import

调试与验证

使用开发者工具检查生成的 CSS 是否包含预期样式,确认变量和混入是否正确应用。通过修改全局变量观察组件样式变化,验证配置是否生效。

BbS.okacop030.info/PoSt/1120_265108.HtM
BbS.okacop031.info/PoSt/1120_567156.HtM
BbS.okacop032.info/PoSt/1120_304234.HtM
BbS.okacop033.info/PoSt/1120_477566.HtM
BbS.okacop034.info/PoSt/1120_259433.HtM
BbS.okacop035.info/PoSt/1120_334627.HtM
BbS.okacop036.info/PoSt/1120_226631.HtM
BbS.okacop037.info/PoSt/1120_311418.HtM
BbS.okacop038.info/PoSt/1120_858605.HtM
BbS.okacop039.info/PoSt/1120_652304.HtM
BbS.okacop030.info/PoSt/1120_134596.HtM
BbS.okacop031.info/PoSt/1120_652701.HtM
BbS.okacop032.info/PoSt/1120_361384.HtM
BbS.okacop033.info/PoSt/1120_165971.HtM
BbS.okacop034.info/PoSt/1120_302384.HtM
BbS.okacop035.info/PoSt/1120_348923.HtM
BbS.okacop036.info/PoSt/1120_941628.HtM
BbS.okacop037.info/PoSt/1120_144589.HtM
BbS.okacop038.info/PoSt/1120_388530.HtM
BbS.okacop039.info/PoSt/1120_886092.HtM
BbS.okacop030.info/PoSt/1120_502041.HtM
BbS.okacop031.info/PoSt/1120_984034.HtM
BbS.okacop032.info/PoSt/1120_245094.HtM
BbS.okacop033.info/PoSt/1120_020204.HtM
BbS.okacop034.info/PoSt/1120_844350.HtM
BbS.okacop035.info/PoSt/1120_478533.HtM
BbS.okacop036.info/PoSt/1120_335468.HtM
BbS.okacop037.info/PoSt/1120_442992.HtM
BbS.okacop038.info/PoSt/1120_896564.HtM
BbS.okacop039.info/PoSt/1120_961977.HtM
BbS.okacop030.info/PoSt/1120_903129.HtM
BbS.okacop031.info/PoSt/1120_910978.HtM
BbS.okacop032.info/PoSt/1120_987624.HtM
BbS.okacop033.info/PoSt/1120_111975.HtM
BbS.okacop034.info/PoSt/1120_423023.HtM
BbS.okacop035.info/PoSt/1120_127243.HtM
BbS.okacop036.info/PoSt/1120_673367.HtM
BbS.okacop037.info/PoSt/1120_141190.HtM
BbS.okacop038.info/PoSt/1120_115770.HtM
BbS.okacop039.info/PoSt/1120_072545.HtM
BbS.okacop030.info/PoSt/1120_406428.HtM
BbS.okacop031.info/PoSt/1120_446937.HtM
BbS.okacop032.info/PoSt/1120_711847.HtM
BbS.okacop033.info/PoSt/1120_614023.HtM
BbS.okacop034.info/PoSt/1120_855665.HtM
BbS.okacop035.info/PoSt/1120_434956.HtM
BbS.okacop036.info/PoSt/1120_003500.HtM
BbS.okacop037.info/PoSt/1120_686679.HtM
BbS.okacop038.info/PoSt/1120_702495.HtM
BbS.okacop039.info/PoSt/1120_968433.HtM
BbS.okacop040.info/PoSt/1120_014916.HtM
BbS.okacop041.info/PoSt/1120_423835.HtM
BbS.okacop042.info/PoSt/1120_593126.HtM
BbS.okacop043.info/PoSt/1120_461157.HtM
BbS.okacop044.info/PoSt/1120_182556.HtM
BbS.okacop045.info/PoSt/1120_127479.HtM
BbS.okacop046.info/PoSt/1120_975504.HtM
BbS.okacop047.info/PoSt/1120_908431.HtM
BbS.okacop048.info/PoSt/1120_039312.HtM
BbS.okacop049.info/PoSt/1120_895519.HtM
BbS.okacop040.info/PoSt/1120_291274.HtM
BbS.okacop041.info/PoSt/1120_220694.HtM
BbS.okacop042.info/PoSt/1120_625739.HtM
BbS.okacop043.info/PoSt/1120_090104.HtM
BbS.okacop044.info/PoSt/1120_191695.HtM
BbS.okacop045.info/PoSt/1120_690796.HtM
BbS.okacop046.info/PoSt/1120_437085.HtM
BbS.okacop047.info/PoSt/1120_398824.HtM
BbS.okacop048.info/PoSt/1120_325184.HtM
BbS.okacop049.info/PoSt/1120_303062.HtM
BbS.okacop040.info/PoSt/1120_665652.HtM
BbS.okacop041.info/PoSt/1120_617506.HtM
BbS.okacop042.info/PoSt/1120_723869.HtM
BbS.okacop043.info/PoSt/1120_835304.HtM
BbS.okacop044.info/PoSt/1120_468546.HtM
BbS.okacop045.info/PoSt/1120_646551.HtM
BbS.okacop046.info/PoSt/1120_710886.HtM
BbS.okacop047.info/PoSt/1120_473114.HtM
BbS.okacop048.info/PoSt/1120_433133.HtM
BbS.okacop049.info/PoSt/1120_738520.HtM

#牛客AI配图神器#

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-16 01:46
点赞 评论 收藏
分享
10-19 10:28
已编辑
成都理工大学 后端工程师
团孝子已上线feeling:面了很多家公司,能感受到目前只有小公司+外包喜欢问八股。大厂虽然也问八股,但是是从实习、项目中进行提问,并且大厂会问很深,面试官也会对你的回答进行思考➕追问,所以准备大厂面试前一定要备好相关资料。对于算法,我做的是codetop前100+力扣hot100+力扣高频150,面试中实感hot100就足够,基本上只要是hot100就秒答。对于项目和八股,我做的也是烂大街的星球项目,八股则是看小林和问ai,自己也写了很多技术博客和画了很多思维导图,并且自己也尝试用嘴巴说出来,不只停留于纸面。运气也很重要,必须要让面试官/HR看到简历才行,所以建议投递时间是下午两点。tl:第一岗位9.9&nbsp;投递9.10&nbsp;一面(一面评价:最近见过最强的大三,结束五分钟后约二面,都晚上九点了不下班吗)9.11&nbsp;二面(三道算法a出两道,反问评价:经验不够等横向,我实习生要啥经验)9.21挂(实习时间过短+其他原因,想要一年实习的,为什么不招个正职)第二岗位10.10投递10.11约面(主管打电话,说看到我之前投递记录了想要我挂qa职进去干后端,同意)10.14&nbsp;一面(无八股,主动说确实很强,意愿很强)10.16&nbsp;oc其余,友邦,东软,东华,惠择,用友oc已拒京东测开一面挂(投后端被测开捞)腾讯测试已拒(投后端被测开捞)ps:表扬惠择的主管面,没怎么问技术(可能是一面面试官沟通过了),全程一起讲大道理,解答了心中很多疑惑,也告诉我以面试官角度来看怎么选候选人,如果可以下次一定选惠择
HeaoDng:美团好像可以触发一面通
点赞 评论 收藏
分享
09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务