解析样式表 Parsing a Stylesheet

Sass 样式表是从一系列 Unicode 代码点中解析出来的。 它是直接解析的,无需先转换为令牌流。

Input Encoding

兼容性:Dart Sass ✗ | LibSass ✓ | Ruby Sass ✓

Dart Sass 目前只支持 UTF-8 编码。 因此,将所有 Sass 样式表编码为 UTF-8 是最安全的。

通常情况下,文档最初仅作为字节序列提供,必须将其解码为 Unicode。 Sass 按如下方式执行此解码:

  • 如果字节序列以 U+FEFF BYTE ORDER MARK 的 UTF-8 或 UTF-16 编码开头,则使用相应的编码。
  • 如果字节序列以纯 ASCII 字符串“@charset”开头,Sass 使用 CSS 算法的第 2 步确定编码以 确定后备编码
  • 否则,使用 UTF-8。

解析错误

当 Sass 在样式表中遇到无效语法时,解析将失败并向用户显示错误,其中包含有关无效语法位置及其无效原因的信息。

请注意,这与 CSS 不同,后者指定如何从大多数错误中恢复,而不是立即失败。 这是 SCSS strictly 不是 CSS 超集的少数情况之一。 但是,对于 Sass 用户来说,立即查看错误比让它们传递到 CSS 输出更有用。

可以通过特定于实现的 API 访问解析错误的位置。

例如,在 Dart Sass 中,您可以访问 SassException.span,在 Node Sass 和 Dart Sass 的 JS 中 API,您可以访问 file line column 属性。