「Sass」- Syntactically Awesome Style Sheets

认识

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; }
}

应用

使用流程

  1. 开发者编写 .scss 或 .sass 文件
  2. Sass 预处理器将代码编译为标准 CSS
  3. 浏览器解析编译后的 CSS

改进

虽然 Sass 仍然流行,但现代 CSS 已经实现了一些 Sass 的特性(如原生变量),PostCSS 等工具也提供了类似功能。然而,Sass 仍然是大型项目中提高 CSS 开发效率的强大工具。

参考

DeepSeek / 介绍 Sass 及其解决的问题
DeepSeek / 介绍 node sass