意見徵求:正斜線作為分隔符號
Natalie Weizenbaum 發佈於 2019 年 5 月 7 日
在 Sass 的早期發展階段,我們決定使用 `/` 作為除法運算符,因為它在當時(和現在)是大多數程式語言中最常見的表示方式。`/` 字元在純 CSS 屬性中很少使用,而且在這些屬性中,它是一種可選的簡寫形式。因此,Sass 定義了一套啟發式方法,用於定義 `/` 何時會被渲染為字面上的斜線,以及何時會被視為運算符。
很長一段時間,這些啟發式方法都運作良好。然而,近年來,CSS 的新特性,例如 CSS Grid 和 CSS Color Level 4,越來越常使用 `/` 作為分隔符號。將同一個字元同時用於除法和斜線分隔,對使用者來說越來越麻煩,最終可能會變得難以維持。
因此,我們計劃重新定義 `/`,使其*僅*作為分隔符號。它將不再建立未加引號的字串(就像目前至少有一個運算元不是數字時那樣),而是建立一個使用新的斜線分隔符號的清單。例如,`1 / 2 / 3` 將是一個包含三個元素、以斜線分隔的清單。除法將改以函式 `divide()`(或在新模組系統中的 `math.div()`)來表示。詳見新的模組系統。
推出推出永久連結
這對於現有的 Sass 語義來說是一個重大的突破性變更,因此我們將分三個階段逐步推出。
-
第一階段不會引入任何突破性變更。它將:
- 新增一個 `divide()` 函式,其功能與目前的 `/` 運算符完全相同,但對於任何非數字的參數,它將產生棄用警告。
- 將以斜線分隔的清單新增到 Sass 的物件模型中,但*沒有*用於建立它們的字面語法。這將在稍後推出,因為否則會造成突破性變更。
- 新增一個 `slash-list()` 函式,用於建立以斜線分隔的清單。
- 針對所有被解釋為除法的 `/` 運算產生棄用警告。
-
第二階段*將會*是一個突破性變更。它將:
- 使 `/` 僅作為清單分隔符號。
- 使 `divide()` 對於非數字的參數拋出錯誤。
- 棄用 `slash-list()` 函式,因為它將變得多餘。
-
第三階段將只移除 `slash-list()` 函式。這不是優先事項,將會延遲到下一個主要版本發佈。
提供意見回饋提供意見回饋永久連結
如果您想了解更多關於建議行為如何運作的詳細資訊,請前往 Sass 語言儲存庫並閱讀完整的提案。您可以跳過「背景」和「摘要」部分,因為它們已包含在上方。但請注意,它是以規格的形式編寫的;它非常適合用於了解邊緣情況的確切運作方式,但不像上面引用的部分那樣口語化。
如果您對提案內容有任何問題,或者它沒有涵蓋您認為重要的使用案例,請在 Sass 語言議題追蹤器中提出。我們將開放討論至少兩週,之後才會將提案標記為「已接受」並進入實作階段。
不過請注意,雖然我們歡迎社群的意見回饋,但 Sass 的設計最終仍由語言團隊決定。我們絕對會考量提出意見的用戶的觀點和使用案例,但我們也有責任考量所有 Sass 甚至 CSS 新手,他們還不知道如何閱讀部落格或在議題追蹤器上發表評論。請記住,我們謹慎的決策過程造就了今日的 Sass,如果我們的決定與您的期望不同,也請耐心等候。