webpack4 css modules
demo 代码点此,webpack4 中通过 css-loader 开启 css 模块化, 开始前先做点准备工作。
不了解 css 模块化的,可以前往查看github_css_modules.
准备工作
安装 webpack:
npm init -y
npm i -D webpack webpack-cli css-loader
创建 webpack.config.js 进行配置:
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
main: './src/index.js'
},
module: {
rules: [
// 不在 node_modules 中的 css,开启 css modules
{
test: /\.css$/,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
/* 以前版本是通过 true 开启,相关配置接着写
modules: true
localIdentName: '[name]__[local]--[hash:base64:5]'
*/
// 现在是给 modules 一个 options 对象开启
modules: {
// 重新生成的 css 类名
localIdentName: '[name]__[local]--[hash:base64:5]'
}
}
}
]
},
// 在 node_modules 中的 css,不开启
{
test: /\.css$/,
include: /node_modules/,
use: [
MiniCssExtractPlugin.loader, 'css-loader']
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: path.resolve(__dirname, './src/index.html'),
filename: 'index.html'
}),
new MiniCssExtractPlugin({
filename: '[name].[hash].css'
})
],
output: {
filename: '[name].[hash].bundle.js',
path: path.resolve(__dirname, './dist')
}
}
更多 css-loader 的配置建议前往 github_css-loader 查看,因为版本更新后,配置可能会有变。
编写 css
配置完 webpack,写 css 时要使用相关语法,因为是通过 webpack 打包时进行编译,重新生成新的 css 类名来防止全局变量名污染的。
**注意: css modules 只针对类、Id选择器生效,不会对标签选择器进行模块化。 **
/* 全局样式 */
:global(.header) {
color: #696969;
background-color: #fff;
}
:global .main {
color: #363636;
background-color: #fff;
}
/* less 等预处理语言可以这样写 */
/* :global {
.footer {
color: #303030;
background-color: #fff;
}
} */
/* 局部样式 */
:local(.header) {
color: red;
background-color: #c2b1b1;
}
:local(.main) {
color: yellow;
background-color: rgb(136, 96, 96);
}
:local(.footer) {
color: blue;
background-color: #929292;
}
编译后的 css 代码:
/* 全局样式 */
.header {
color: #696969;
background-color: #fff;
}
.main {
color: #363636;
background-color: #fff;
}
/* less 等预处理语言可以这样写 */
/* :global {
.footer {
color: #303030;
background-color: #fff;
}
} */
/* 局部样式 */
.index__header--1JD7j {
color: red;
background-color: #c2b1b1;
}
.index__main--1j9-Y {
color: yellow;
background-color: rgb(136, 96, 96);
}
.index__footer--gJKjp {
color: blue;
background-color: #929292;
}
使用
因为 css 类名是重新编译后的,所以使用时不能直接使用原 css 类名,要通过 import 语法使用。
import styles from './index.css';
export const Header = () => {
return `
<h1 class=${styles.header}>header</h1>
`
}
在 html 里面是这样的:
<h1 class="index__header--1JD7j">header</h1>
webpack4 css modules的更多相关文章
- CSS Modules入门及React中实践(内附webpack4配置)
本篇文章以整理为主,自己进行了部分修改,如有侵权,请告知 CSS Modules介绍 CSS Modules是什么东西呢?首先,让我们从官方文档入手:GitHub – css-modules/css- ...
- 在Angular1.X中使用CSS Modules
在Angular1.5中,增加了一个Component方法,并且定义了组件的若干生命周期hook,在代码规范中也是推崇组件化开发,但是很遗憾的是,CSS模块化组件化的问题并没有得到解决,大部分项目的打 ...
- CSS modules 与 React中实践
最近一直在学习React,看上去蛮简单的内容,其实学习曲线还是比较高的. 目前学到css绑定的问题,看到有一篇好的文章,就转过来了. CSS 模块化的解决方案有很多,但主要有两类.一类是彻底抛弃 CS ...
- 在React中使用CSS Modules设置样式
最近,一直在看React...那真的是一个一直在学的过程啊,从配置环境webpack,到基础知识jsx,babel,es6,没有一个不是之前没有接触的.其实,我内心是兴奋的啊,毕竟,活着就是要接触一些 ...
- Webpack 2 视频教程 012 - 理解Webpack 中的 CSS 作用域与 CSS Modules
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- 在vue中使用css modules替代scroped
前面的话 css modules是一种流行的模块化和组合CSS的系统. vue-loader提供了与css modules的集成,作为scope CSS的替代方案.本文将详细介绍css modules ...
- css模块化及CSS Modules使用详解
什么是css模块化? 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种处理复杂系统分解成为更好的可管理模块的方 ...
- CSS Modules In Webpack
1)从形式上看,CSS Modules 是将CSS中的选择器转换为变量,然后在DOM中引用变量来引入样式. 2)从效果上看,CSS Modules 可以将CSS选择器名字转成随机字符串,保证选择器同名 ...
- CSS Modules 与 scoped 的不一样
What ? css 的作用域表现. Css modules 是一个CSS文件,其中所有类名和动画名称默认为局部作用域. 使用JS编译原生的CSS文件,使其具备模块化的能力,该文件需要import使用 ...
随机推荐
- iOS开发时获取第一响应者
上篇中提到键盘相应时间中用到了获取当前第一响应者的方法是苹果的是有方法,无法上传到App Store,本文将介绍一种非常简单的且未用到私有API的方法来获取当前第一响应者. 实现思路:用到的iOS A ...
- Hive性能调优(二)----数据倾斜
Hive在分布式运行的时候最害怕的是数据倾斜,这是由于分布式系统的特性决定的,因为分布式系统之所以很快是由于作业平均分配给了不同的节点,不同节点同心协力,从而达到更快处理完作业的目的. Hive中数据 ...
- 微信小程序如何使用 Git 实现版本管理和协作开发
前言 在微信小程序开发的过程中,代码版本管理往往需要使用第三方工具进行管理.虽然微信Web开发工具提供了对Git文件版本状态的提示,但实际的使用体验依然不尽人意. 随着微信Web开发工具的更新,最新的 ...
- putty 配色方案
putty 配色方案 修改地点: Default Foreground: 255/255/255 Default Background: 51/51/51 ANSI Black: 77/77/77 A ...
- wsl笔记
目录 环境 修改更新源 新建用户 设置超级用户 环境变量 zsh美化终端 设zsh为默认shell 环境变量PATH 开启 ssh 远程连接 apt命令与问题 windows 和 wsl 互相访问文件 ...
- 十一,专著研读(CART算法)
十一,专著研读(CART算法) CART称为分类回归树,既能用于分类也能用于回归.使用二元切分方法处理连续型变量,给定特定值,如果特征值大于给定值就走左子树,否则走右子树. CART算法步骤 决策树生 ...
- 浅谈this指向问题
链接地址:https://www.jianshu.com/p/34572435b5d0
- SpringBoot定时器任务
Spring Boot使用@Scheduled定时器任务 摘要: Spring Boot之使用@Scheduled定时器任务 假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在A ...
- 对mglearn库的理解(转)
https://blog.csdn.net/az9996/article/details/86490496
- 查看xml源码的方法
查看xml源码的方法 要通过查看源码才能看到xml源码 因为 print_r输出的时候 默认页面打开是html编码的...... 所以解析不了xml