1. 程式人生 > >webpack之css模組化

webpack之css模組化

前言

本文演示了

  • 如何開始css模組化;
  • 如何選擇性的開啟部分css檔案的模組化功能;
  • 如何讓模組化後寫入html的class更具有可讀性;
  • 涉及到的loader: css-loader、style-loader

開啟css-loader的模組化配置

當前專案目錄和package.json配置::


如何使css模組化?需要在我們的webpack.config.js中對css-loader進行一些額外設定。

編輯main.css


編輯之前的app.js 檔案


編輯之後的app.js 檔案


執行 npm run dev

瀏覽器截圖如下:

可以看出瀏覽器控制檯打印出的main是一個js物件,所以我們在應用main.css中的類名的時候,需要用 main.ot 。

同理,我們可以新建多個css檔案(main1.css、main2.css),引用其中的類名的時候,只需要用main1.o或者main2.ot。這樣即使不同的樣式檔案中class重名也不會產生樣式的覆蓋。

但是,一旦開啟css模組化,意味著所引入的所有的css檔案都要用css模組化的寫法。

如何開啟單個樣式檔案的全域性模式呢(某個樣式檔案不想要css模組化的寫法)?

可以在webpack.config.js中配置兩次處理css的loader,配置如下圖:


上面的配置保證了在node_modules和src/common下的css是全域性的,在其之外的css是模組化的。

編寫app.js如下。


執行npm run dev,測試兩個樣式均正常載入。

開啟瀏覽器控制檯,看到生成的html中的class名是一堆base64字元。

如何讓css模組化後生成的class具有可讀性?

配置webpack.config.js中css-loader的localIdentName:


執行npm run dev,瀏覽器控制檯截圖如下:

可以看出 '[path]-[name]-[local]-[hash:base64:6]' 對應  'src-common-style--main-ot-7LqHWv'。

一般,在專案中配置 localIdentName: '[name]-[local]-[hash:base64:6]' 就可以。