认识
Sass (Syntactically Awesome Style Sheets) 是一种 CSS 预处理器,它扩展了 CSS 的功能,使样式表的编写更高效、更可维护。Sass 通过引入变量、嵌套规则、混合宏(mixins)、继承等特性,解决了传统 CSS 开发中的诸多痛点。
组成
WIP
构建
Node Sass
Node Sass 是一个将 Sass (Syntactically Awesome Style Sheets) 编译成 CSS 的 Node.js 库。它是流行的 LibSass C/C++ 库的 Node.js 绑定版本。
https://github.com/sass/node-sass
npm set sass_binary_site https://npmmirror.com/mirrors/node-sass/
其主要特点
- 高性能:由于基于 LibSass 的 C/C++ 实现,编译速度比纯 JavaScript 实现的 Sass 更快
- 兼容性:支持大多数 Sass 功能,与 Ruby Sass 保持高度兼容
- 易用性:作为 npm 包提供,易于在 Node.js 项目中使用
需要注意的是,Node Sass 目前已经弃用,官方推荐使用 Dart Sass 作为替代方案。Dart Sass 的 API 与 Node Sass 高度相似,迁移通常只需更改 require/import 语句。尽管 Node Sass 已被弃用,但在一些遗留项目中仍可能遇到它,了解它的基本用法对于维护这些项目仍然有帮助。
性质
其提供很多功能来解决问题,比如 缺乏代码复用机制、选择器嵌套混乱、无法实现样式复用、缺乏继承机制、难以模块化管理、缺乏运算能力、缺乏逻辑控制、……,其本质上要解决的问题还是 CSS 文件的管理。
缺乏代码复用机制
问题:传统 CSS 中重复的值(如颜色、字体等)需要多次编写
解决:Sass 提供变量功能
$primary-color: #3498db; $font-stack: Helvetica, sans-serif; body { color: $primary-color; font-family: $font-stack; }
选择器嵌套混乱
问题:CSS 中多层嵌套选择器需要重复编写父选择器
解决:Sass 提供嵌套语法
nav { ul { margin: 0; li { display: inline-block; } } a { text-decoration: none; } }
应用
使用流程
- 开发者编写 .scss 或 .sass 文件
- Sass 预处理器将代码编译为标准 CSS
- 浏览器解析编译后的 CSS
改进
虽然 Sass 仍然流行,但现代 CSS 已经实现了一些 Sass 的特性(如原生变量),PostCSS 等工具也提供了类似功能。然而,Sass 仍然是大型项目中提高 CSS 开发效率的强大工具。
参考
DeepSeek / 介绍 Sass 及其解决的问题
DeepSeek / 介绍 node sass