嵌入式 Sass 正式 上線
Natalie Weizenbaum 於 2022 年 2 月 1 日 發佈
經過多年的規劃和開發,我很興奮地終於宣布,穩定版的嵌入式 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 由三個部分 組成:
-
編譯器,一個包裝 Dart Sass 的 Dart 可執行檔,負責實際的檔案解析和編譯工作。Dart 原生可執行檔通常比 JavaScript 快得多,因此使用它們來執行樣式表評估的密集運算工作,正是嵌入式 Sass 速度的 來源。
-
主機,任何語言(在這種情況下是 JavaScript)的函式庫,提供使用者友善的 API 來呼叫編譯器。主機為呼叫者提供配置選項,包括定義編譯所使用的自訂匯入器和 Sass 函式 的功能。
-
協定,一個基於協定緩衝區 (Protocol Buffer)的規範,定義了主機和編譯器之間如何通訊。這種通訊是通過編譯器可執行檔的標準輸入和輸出串流進行的,編譯器可執行檔由主機呼叫來執行每次 編譯。
其他語言其他語言 永久連結
設計嵌入式 Sass 的部分原因是為了讓 JavaScript 以外的語言也能像過去的 C++ LibSass 包裝器一樣,可以使用自訂匯入器和函式來完全掌控 Sass 編譯的功能。我們希望社群成員能夠使用這個協定,為許多其他熱門的前端語言實作嵌入式主機。如果您正在這樣做,請在 Twitter 上或Gitter 上聯繫我們,我們會在此網站上提供 連結!