scss是现代css项目唯一值得选的语法,sass(.sass)为遗留格式应避免使用;二者编译结果相同但语法差异大,scss兼容css、工程友好,而.sass因缩进敏感、协作困难、生态支持弱等被主流弃用。

SCSS 是现代 CSS 项目唯一值得选的语法,Sass(.sass 缩进语法)应视为遗留格式,避免在新项目中使用。
SCSS 和 Sass 的本质区别只在语法写法和文件后缀
它们编译出的 CSS 完全一致,但输入方式天差地别:
-
.scss文件用{}和;,和原生 CSS 一模一样,任何合法的.css文件改后缀为.scss就能直接编译 -
.sass文件禁用{}、;、:,靠缩进层级表达结构,比如color: red在.sass中必须写成color red - Dart Sass(当前唯一官方维护的实现)已将
.sass语法明确标记为 legacy syntax,文档里不再推荐,新版默认禁用部分旧特性
为什么 .sass 在真实项目中几乎没人用
不是功能不行,而是工程成本太高:
- 编辑器缩进设置稍有不一致(Tab vs 空格、2格 vs 4格),就会报错
Invalid indentation,且错误位置常不准确 - 复制粘贴样式片段时,缩进极易被破坏,
font-size: 16px多缩进一层,编译器就认为它是上一行的子属性 - Git diff 几乎无法看出语义变更——全是空格增减,Code Review 形同虚设
- 主流构建工具(Vite / Webpack / Next.js)默认只适配
.scss;.sass需手动配置 loader,且热更新稳定性差 - 所有主流 UI 库(Ant Design、Element Plus、Vuetify)源码只提供
.scss版本,没有.sass分支
SCSS 入手零门槛,但要注意几个实际坑点
你不需要“学 SCSS”,只需要知道怎么安全地用起来:
- 变量声明统一用
$开头:$primary-color: #007bff;,别写成@primary-color(那是 Less) - 导入文件时,
@import "base"会自动匹配_base.scss,下划线前缀表示局部文件,不会单独编译 - 嵌套层级建议不超过 3 层,否则生成的 CSS 选择器过长,影响性能和可维护性
- 如果项目已有大量
.css,直接重命名为.scss即可,无需改动内容——这是 SCSS 最强的工程优势 - 不要依赖
@import做模块化,现代项目优先用@use(Dart Sass 1.23+),它能避免变量污染,但需注意@use不支持循环引用
margin、硬编码颜色值、复制粘贴媒体查询,那 .scss 就是当下最省力的升级路径。缩进语法的理论简洁性,在协作开发的现实里,早被空格 bug 和 CI 编译失败碾得粉碎。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











