CSS Module 淺析


 背景

  在多人項目中使用react 構建單頁面應用過程中,出現切換不同路由時,頁面布局受影響的問題,是由於css混亂而引起的。因為項目本身使用sass進行css的編寫,全線轉換成react-style的可能性較低,所以打算使用CSS Module進行逐漸升級。

 配置

  在webpack.config.js中進行配置

 1 {
 2   test: /\.scss$/,
 3    include: path.resolve(__dirname, 'src/routes'),
 4    loader: 'style-loader!css-loader?modules&localIdentName=[name]__[local]-[hash:base64:5]!sass-loader?sourceMap=true'
5 },
6 {
7   test: /\.scss$/,
8 exclude: path.resolve(__dirname, 'src/routes'),
9 loader: 'style-loader!css-loader!sass-loader?sourceMap=true'
10 },

因為是逐步升級所以僅在 src/routes目錄下開啟CSS Modules模式,localIdentName表示的是命名規則

注意:在webpack中對同一種文件的兩種loader 如果出現目錄覆蓋的情況,是會報錯的喲!

 

 使用

  來看下demo

  Page1.jsx

1 import React, { Component } from 'react';
2 import Styles from './page1.scss';
3 export default class Page1 extends Component {
4   render() {
5     return (
6       <div className={Styles.component}>aaa</div>
7     );
8   }
9 };

  page1.scss

.component {
  background-color: lightblue;
  font-size: 30px;
}

  

  page2.jsx

import React, { Component } from 'react';
import Styles from './page2.scss';

export default class Page1 extends Component {
  render() {
    return (
      <div className={Styles.component}>bbb</div>
    );
  }
};

  page2.scss

.component {
  background-color: lightsalmon;
  font-size: 60px;
  border: 3px solid black;
}

 

可以看出兩個頁面的樣式完全互相不影響啦!

未完待續。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM