其他預(yù)編譯器

2018-02-24 15:11 更新

忽略其他特性,Sass 對(duì)自己的定位首先是一個(gè)預(yù)處理器。其最主要的競(jìng)爭(zhēng)對(duì)手包括?LESS,一個(gè)基于 Node.js 的預(yù)處理器,因著名 CSS 框架?Bootstrap?的使用而聲名鵲起。此外還有?Stylus?,一種對(duì)形式無(wú)所限制的 LESS 版本。它是一種無(wú)論你想怎么樣使用,大都能順利轉(zhuǎn)換成 CSS 的程序語(yǔ)言。

為什么選擇 Sass 勝過(guò) LESS 以及其他預(yù)處理器?,這始終是一個(gè)待解決的問(wèn)題。就在剛剛,我們還建議在 Ruby 項(xiàng)目中使用 Sass,因?yàn)?Sass 初創(chuàng)于 Ruby 并且在 Ruby on Rails 中運(yùn)行良好?,F(xiàn)在隨著 LibSass 與 Sass 的逐步接近,上述建議顯然已經(jīng)不再絕對(duì)和必須。

我之所以喜歡 Sass 源于它最大程度保留了 CSS 的原生特性。Sass 的設(shè)計(jì)基于非常堅(jiān)實(shí)的設(shè)計(jì)原則:大部分的設(shè)計(jì)順其自然的來(lái)源于核心設(shè)計(jì)師們的信條,比如添加額外的功能會(huì)增加語(yǔ)言的復(fù)雜度,但以實(shí)用性衡量極具價(jià)值的話便得以保留;同時(shí),使用 Sass 來(lái)美化一個(gè)塊級(jí)元素,那么美化前后的效果應(yīng)該是可預(yù)見(jiàn)和可推理的。同時(shí),Sass 比其他預(yù)處理器更加關(guān)注細(xì)節(jié)。據(jù)我所知,核心設(shè)計(jì)者們非常關(guān)心 Sass 與 CSS 在細(xì)節(jié)上的一致性,并確保所有的常用方式具有高度一致的表現(xiàn)。

換言之,Sass 并不想成為一個(gè)通過(guò)在編程語(yǔ)言頂層添加特殊功能實(shí)現(xiàn)有關(guān)用戶(hù)邏輯處理的預(yù)處理器,以取悅于像我一樣喜歡傻瓜式編程的程序員。它更準(zhǔn)確的定位是一款軟件,旨在解決實(shí)際問(wèn)題。通過(guò)提供實(shí)用功能改善 CSS 的短板。

預(yù)處理器之外,我們還需要提及一下后處理器。得益于?postCSS?和?CSSNext項(xiàng)目,后處理器最近幾個(gè)月得到了顯著曝光。后處理器幾乎等同于預(yù)處理器,稍有不同的是它專(zhuān)注于實(shí)現(xiàn)那些即將出現(xiàn)在 CSS 語(yǔ)法中的特性。

你可以認(rèn)為后處理器是一種膩?zhàn)幽_本,用來(lái)支持尚未被瀏覽器實(shí)現(xiàn)的 CSS 功能。舉例來(lái)說(shuō),你可能會(huì)像?CSS 規(guī)范中描述的一樣使用變量,然后用后處理器編譯樣式表,在這個(gè)過(guò)程中后處理器只會(huì)找出變量出現(xiàn)的地方并替換成真實(shí)值——Sass 也是這么做的。

后處理器背后的思維是,一旦瀏覽器支持了新的特性(比如 CSS 變量),后處理器就不再做這方面處理,而是讓瀏覽器執(zhí)行相關(guān)處理。

雖然在當(dāng)下提供對(duì)未來(lái)語(yǔ)法功能的支持是一件很了不起的事情,但我還是喜歡在大多數(shù)的工作中使用 Sass。當(dāng)然,在一些情況下我認(rèn)為后處理器比 Sass 更適合,比如 CSS 前綴。稍后我們會(huì)講到這個(gè)問(wèn)題。

擴(kuò)展閱讀

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)