CSS模塊化(CSS預(yù)處理器簿透、CSS Module)

CSS預(yù)處理器

我們知道移袍,CSS入門簡單但是卻有許多弊端。例如:

1老充、語法不夠強(qiáng)大葡盗,比如無法嵌套書寫,導(dǎo)致模塊化開發(fā)中需要書寫很多重復(fù)的選擇器啡浊;

2戳粒、沒有變量和合理的樣式復(fù)用機(jī)制,使得邏輯上相關(guān)的屬性值必須以字面量的形式重復(fù)輸出虫啥,導(dǎo)致難以維護(hù)蔚约;

這就導(dǎo)致了我們在工作中無端增加了許多工作量。為了解決這個(gè)問題涂籽,前端開發(fā)人員需要使用一種稱之為?【CSS 預(yù)處理器】?的工具苹祟。CSS預(yù)處理器就是一種可以將你根據(jù)它的規(guī)則寫出來的格式轉(zhuǎn)成css的東西,CSS預(yù)處理器主要有以下功能:

1评雌、文件切分:把一個(gè)大的 CSS 文件在切分成多個(gè)小文件树枫,實(shí)現(xiàn)初步模塊化

2、選擇符嵌套:避免了書寫大量重復(fù)選擇器景东,減少代碼冗余

3砂轻、設(shè)置變量:實(shí)現(xiàn)樣式復(fù)用,使代碼變得易維護(hù)

4斤吐、可使用運(yùn)算搔涝、函數(shù)等

幾種主流CSS預(yù)處理器分別是Less、Sass和Stylus和措。

Sass:2007年出現(xiàn)庄呈,有兩種語法,分別以 .sass 和 .scss 為擴(kuò)展名派阱∥芰簦基于 Ruby,通過服務(wù)端處理贫母,功能強(qiáng)大文兑。解析效率高。需要學(xué)習(xí) Ruby 語言腺劣,上手難度高于 Less绿贞。

Less:2009年出現(xiàn),受Sass影響大誓酒,以 .less 為擴(kuò)展名樟蠕。基于 NodeJS靠柑,通過客戶端處理寨辩,使用簡單。功能比 SASS 簡單歼冰,解析效率也低于 SASS靡狞,但在實(shí)際開發(fā)中足夠了。

Stylus:2010年出現(xiàn)隔嫡,來自Node.js社區(qū)甸怕,主要用來給Node項(xiàng)目進(jìn)行CSS預(yù)處理支持,以 .styl 為擴(kuò)展名腮恩,使用不如Sass和Less廣泛梢杭。

CSS?Module

我們知道組件應(yīng)該相互獨(dú)立,引入一個(gè)組件時(shí)秸滴,應(yīng)該只引入它所需要的 CSS 樣式武契。由于Saas/Less很難實(shí)現(xiàn)對每個(gè)組件都編譯出單獨(dú)的 CSS,所以實(shí)現(xiàn)模塊化只有【CSS預(yù)處理器】是遠(yuǎn)遠(yuǎn)不夠的荡含,還有很多問題沒得到解決咒唆,如下:

1、全局污染谱秽、命名混亂霉赡。

2孝凌、依賴管理不徹底。

3浸船、無法共享變量。

4寝蹈、代碼壓縮不徹底糟袁。

這時(shí)就需要 CSS Modules來解決,它使用JS編譯CSS文件躺盛,使其具備模塊化的能力项戴。

CSS Modules不是將CSS改造的具有編程能力,而是加入了局部作用域槽惫、依賴管理周叮,這恰恰解決了最大的痛點(diǎn)〗缧保可以有效避免全局污染和樣式?jīng)_突仿耽,能最大化地結(jié)合現(xiàn)有 CSS 生態(tài)和 JS 模塊化能力。

CSS Modules的配置也非常簡單各薇,下面以webpack+react為例介紹一下:

因?yàn)閣ebpack 自帶的 css-loader 組件项贺,自帶了 CSS Modules君躺,所以在webpack配置文件(webpack.config.js)中加上【module:?true?即可

在模塊中使用時(shí)我們只需要修改一下css文件的引用方式即可

渲染結(jié)果為:

說明:

CSS Module還是JS和CSS分離的寫法,不會(huì)改變大家的書寫習(xí)慣开缎,CSS Module只需修改構(gòu)建代碼和使用模塊依賴引入className的方式即可使用棕叫,且支持less和sass的語法。

拓展(babel-plugin-react-css-modules):

babel-plugin-react-css-modules 可以實(shí)現(xiàn)使用styleName屬性自動(dòng)加載CSS模塊奕删。只需要把className換成styleName即可獲得CSS局部作用域的能力

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俺泣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子完残,更是在濱河造成了極大的恐慌伏钠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谨设,死亡現(xiàn)場離奇詭異熟掂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扎拣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門打掘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹏秋,你說我怎么就攤上這事尊蚁。” “怎么了侣夷?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵横朋,是天一觀的道長。 經(jīng)常有香客問我百拓,道長琴锭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任衙传,我火速辦了婚禮决帖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蓖捶。我一直安慰自己地回,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布俊鱼。 她就那樣靜靜地躺著刻像,像睡著了一般。 火紅的嫁衣襯著肌膚如雪并闲。 梳的紋絲不亂的頭發(fā)上细睡,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音帝火,去河邊找鬼溜徙。 笑死湃缎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蠢壹。 我是一名探鬼主播嗓违,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼知残!你這毒婦竟也來了靠瞎?” 一聲冷哼從身側(cè)響起比庄,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤求妹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后佳窑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體制恍,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年神凑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了净神。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溉委,死狀恐怖鹃唯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓣喊,我是刑警寧澤坡慌,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站藻三,受9級特大地震影響洪橘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棵帽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一熄求、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗概,春花似錦弟晚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隶垮,卻和暖如春藻雪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸吞。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工勉耀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留指煎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓便斥,卻偏偏與公主長得像至壤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子枢纠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354