嵌入式 Sass 正式发布

2022年2月1日发布,作者:Natalie Weizenbaum

经过多年的规划和开发,我非常高兴地宣布 Embedded Dart Sass 的稳定版本终于发布,以及它的第一个官方包装器,sass-embedded 包现已在 npm 上提供!

嵌入式 Sass 是一项持续的努力,旨在为尽可能多的不同语言提供高性能的 Sass 库,从 Node.js 开始。尽管 Node.js 已经可以访问纯JS sass 包,但 JavaScript 的本质限制了该包处理大型 Sass 文件的速度,尤其是在异步模式下。我们预计 sass-embedded 将成为开发人员的一大福音,因为他们非常关注编译速度,特别是那些仍在使用 node-sass 的用户,对他们来说,性能一直是避免使用 Dart Sass 的主要原因。

sass-embedded 包完全支持新的JS API 以及旧版 API,除了少数外观选项。您可以将其作为 sass 包的直接替换,并且它应该与所有相同的构建插件和库一起使用。请注意,sass-embedded异步模式下比同步模式略快(而 sass 包在同步模式下更快)。对于大量的 Sass 文件,无论在何种模式下运行 sass-embedded 通常都比 sass 快得多。

为了减少关于哪个版本的哪个包支持哪些功能的混淆,sass-embedded 包将始终与 sass 包具有相同的版本。当向 JS API 添加新功能时,这两个包将同时支持这些功能,并且当向 Sass 添加新的语言功能时,这些功能将始终直接包含在新的 sass-embedded 版本中 

工作原理工作原理 永久链接

嵌入式 Sass 由三个 部分组成

  1. 编译器,一个 Dart 可执行文件,它包装了 Dart Sass 并执行解析和编译文件的实际繁重工作。Dart 本地可执行文件通常比 JavaScript 快得多,因此将它们用于样式表评估的计算密集型工作是 Embedded Sass 获得其 速度的原因。

  2. 主机,任何语言(在本例中为 JavaScript)中的库,它为调用编译器提供可用的最终用户 API。主机为调用者提供配置选项,包括定义编译器使用的自定义导入器和 Sass 函数的能力 

  3. 协议,一个协议缓冲区 基于主机和编译器如何相互通信的规范。此通信通过编译器可执行文件的标准输入和输出流进行,编译器可执行文件由主机调用以执行每个 编译。

其他语言其他语言永久链接

嵌入式 Sass 的设计部分是为了让除了 JavaScript 之外的语言能够访问 Sass 编译的全部功能,包括自定义导入器和函数,这与过去 C++ 包装器用于 LibSass 的方式类似。我们希望社区成员将使用此协议为许多其他流行的前端语言实现嵌入式主机。如果您最终这样做,请在 TwitterGitter 上给我们发送消息,我们将在本 网站上链接它!