在Web前端開發(fā)中,使用了許多的工具和庫,其中CSS預(yù)處理器(如Sass、Less等)可以提高我們編寫CSS的效率,但是這里的問題在于我們要如何讓瀏覽器理解這些預(yù)處理后的CSS語言呢?這時(shí)候CSS-loader就被設(shè)計(jì)出來了,那么CSS-loader的原理是什么呢?
在Webpack打包時(shí)的一組Loaders中,CSS-loader就是其中的一個(gè)。CSS-loader的主要功能是分析CSS模塊之間的關(guān)系,并將CSS模塊中的類名和key:value格式的CSS代碼轉(zhuǎn)換為JavaScript對(duì)象,以供Webpack能夠處理和打包它們。例如下面這個(gè)CSS代碼:
.hello { color: #fff; }
CSS-loader會(huì)解析它,并將其轉(zhuǎn)化為如下所示的JavaScript對(duì)象:
{ "hello": "abc123" }
其中,“hello”是這個(gè)CSS類名的名稱,而“abc123”則是一個(gè)自動(dòng)分配的唯一字符串,用于防止類名重復(fù)。
當(dāng)webpack處理JavaScript代碼時(shí),我們可以使用import或require將CSS文件導(dǎo)入到JavaScript文件中。例如:
import styles from './styles.css'; console.log(styles.hello);
在被Webpack處理后,styles就變成了一個(gè)JavaScript對(duì)象,可以無縫地在JavaScript代碼中使用CSS類名了。
值得注意的是,CSS-loader只是將CSS轉(zhuǎn)化為JavaScript對(duì)象,而并未將其應(yīng)用到頁面上。要將CSS應(yīng)用到頁面中,還需要將其交給Webpack中的style-loader來處理。style-loader會(huì)將CSS樣式注入到HTML頁面的