前言
日常积累,欢迎指正
正文
什么是 css 模块化?
配置
css 模块化最重要的一个目底就是解决 css global 问题,最简单的使用方式就是在 webpack 中配置 cssLoader.modules = true
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader',
options: {
// modules: true
modules: {
localIdentName: '[path][name]__[local] --[hash:base64:5]',
}
}
},
{
loader: 'postcss-loader'
}
]
}
]
},
}
使用
js
import React from 'react'
import style from './index.css'
export default function Test(){
return <div className = {
style.container}>
{
/* return <div className = 'container'> */}
hello test
</div>
}
css
/* Test */
.container {
color: red;
height: 600px;
width: 800px;
background-image: url(../static/images/sunfloewr.png);
}
运行效果
这样虽然达到了效果却存在一些问题(来自babel-plugin-react-css-modules#css-module):
- You have to use camelCase CSS class names. - css 名称必须驼峰命名
- You have to use styles object whenever constructing a className. - 必须将 css 导入为 样式对象,并用在 className 上
- Mixing CSS Modules and global CSS classes is cumbersome. - CSS Modules 和 global CSS 的 class 是混合的
- Reference to an undefined CSS Module resolves to undefined without a warning.
babel-plugin-react-css-modules 使用 styleName 属性自动做 CSS Modules,如:
import React