class类名在webpack项目中的两种引用方式
一、问题描述
在项目工程中,我们通常既用到css module,也用到普通的less文件引用方式,代码及webpack配置如下,运行时,发现只有css module起作用,如何让两者都起作用呢?
// exp1.less
.box {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
// exp2.less
.pf {
color: aquamarine;
font-size: 20px;
}
// jsx文件
import './exp1.less'; //普通用法
import styles from './exp2.less'; //css module
<div className='box'>
<p className={styles.pf}>测试cssmodule语法</p>
</div>
// webpack配置文件。
{
test: /\.less$/,
exclude:'node_modules',
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
minimize: false,
modules: true,
localIdentName: '[name]_[local]_[hash:base64:5]'
}
},
'less-loader'
]
}
二、问题分析
这是由于webpack加载器配置不对引起的。
三、解决方案
1、都写成less文件,但是要放在不同目录,并且修改webpack配置。
// exp1.less
.box {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
// exp2.less
.pf {
color: aquamarine;
font-size: 20px;
}
//jsx文件
import './exp1.less'; //普通用法
import styles from './cml/exp2.less'; //css module
<div className='box'>
<p className={styles.pf}>测试cssmodule语法</p>
</div>
// webpack配置文件,cml为目录名,统一放需要css module的less文件。
{
test: /\.less$/,
exclude:/(node_modules|cml)/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader'
},
'less-loader'
]
},
{
test: /\.less$/,
exclude:/node_modules/,
include:/cml/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
minimize: false,
modules: true,
localIdentName: '[name]_[local]_[hash:base64:5]'
}
},
'less-loader'
]
},
2、写成css文件和less文件,放在同一目录。(推荐)
// exp1.css
.box {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
// exp2.less
.pf {
color: aquamarine;
font-size: 20px;
}
// jsx文件
import './exp1.css'; // 普通用法
import styles from './exp2.less'; //css module
<div className='box'>
<p className={styles.pf}>测试cssmodule语法</p>
</div>
// webpack配置文件。
{
test: /\.less$/,
exclude:'node_modules',
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
minimize: false,
modules: true,
localIdentName: '[name]_[local]_[hash:base64:5]'
}
},
'less-loader'
]
}
3、在团队中统一代码风格
尤其在同一个项目中,推荐使用同一种类名引用方式,要么都用普通方式。
// exp1.less
.box {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
// exp2.less
.pf {
color: aquamarine;
font-size: 20px;
}
// jsx文件
import './exp1.less'; //普通用法
import './exp2.less'; //普通用法
<div className='box'>
<p className='pf'>测试cssmodule语法</p>
</div>
// webpack配置文件
{
test: /\.less$/,
exclude:/node_modules/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader'
},
'less-loader'
]
}
4、在团队中统一代码风格(推荐)
尤其在同一个项目中,推荐使用同一种类名引用方式,都用css module。
// exp1.less
.box {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
// exp2.less
.pf {
color: aquamarine;
font-size: 20px;
}
// jsx文件
import style1 from './exp1.less'; //css module
import styles from './exp2.less'; //css module
<div className={style1.box}>
<p className={styles.pf}>测试cssmodule语法</p>
</div>
// webpack配置文件
{
test: /\.less$/,
exclude:/node_modules/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
minimize: false,
modules: true,
localIdentName: '[name]_[local]_[hash:base64:5]'
}
},
'less-loader'
]
},
class类名在webpack项目中的两种引用方式的更多相关文章
- Javaweb学习笔记——(六)——————xml中jaxp两种解析方式和dom4j运用
1.xml的scheam约束 dtd的语法:<!ElEMENT 元素名称 约束> **schema符合xml的语法,xml语句 **一个xml中可以有多个schema,多个schema使用 ...
- javascript中对象两种创建方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 测开之路一百零五:bootstrap的两种引用方式
一:下载到本地引用: 3.3.7版本:https://getbootstrap.com/docs/3.3/getting-started/#download 下载后解压到本地项目中引用 第二种,cdn ...
- css的两种引用方式 link和@import
学习web开发的最大乐趣就是不断的发现自己以前不曾见过的东西,这些东西对于我来说是那么的新鲜有趣. 比如说今天偶尔研究别人的网站,就发现了有趣的东东. 当点开此网页的css时(这个css文件命名方式就 ...
- Java中的四种引用方式
无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与"引用"有关.在Java语言中,将引用又分为强引用.软引用.弱引用 ...
- String中的两种实例化方式的区别
直接赋值:(String str = "字符串");只会开辟一块堆内存空间,并且会自动保存在对象池中以供下次重复使用. 构造方法:(String str = new String ...
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 以前iOS的搜索一般都使用UISearchDisplayCon ...
- web 开发之js---ajax 中的两种提交方式ajax post 和 ajax get 实例
()post http://04101334.iteye.com/blog/637695/ ()get function serializeElement(element) { var method ...
- Hibeernate中的两种分页方式
1. return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(S ...
随机推荐
- POJ - 3252 - Round Numbers(数位DP)
链接: https://vjudge.net/problem/POJ-3252 题意: The cows, as you know, have no fingers or thumbs and thu ...
- SSM自测错题解析
试题解析:spring 中bean的作用域有:singleton.session.prototype.request.global Session 试题解析:使用import导入子元素需要用prope ...
- windows错误代码摘录
Windows API 错误代码定义在winerror.h里,当我们得到一个Error Code不知其意时,可以查阅这个文件 这里定义了绝大部分的错误,摘录翻译如下 [0]-操作成功完成. [1]-功 ...
- 开始编写Makefile(三)Makefile的默认模式规则
1.make中建立的其他语言的规则 SCCS , RCS , ar, lex 和yacc 命令 2.为了建立一个目标,make会遍历一连串的依赖关系:这个是为 决定何处开始创建: 如果没有找到目标文 ...
- COGS 1151 活动安排
- 有 N 场活动,每场活动在特定的时间需要占用场地. - 如果有两场活动需要同一时间占用场地,则不能同时举行 - 问最多能举行多少场活动? 将所有活动按照结束时间从早到晚排序后贪心即可 具体思路看代 ...
- 推荐VSCode多语言开发,支持一键JAVA
本文梯子 缘起 一.VSCode 开发 NetCore 0.安装 VSCode IDE 1.安装依赖扩展 2.新建一个项目 3.打开已有工程 4.总结 二.VSCode 开发 Vue 1.安装插件 2 ...
- Mac laravel: command not found
如果用的oh-my-zsh 安装laravel 提示找不到.可以试试下面的 export PATH=$HOME/bin:/usr/local/bin:~/.composer/vendor/bin:$P ...
- Tkinter 之记事本项目实战
一.效果图 二.文件 链接:https://pan.baidu.com/s/1CUkfWpfH8t2GSJyy5hYv-A 提取码:5yvn 后续可能做一些功能扩展,有需要源码的可以评论联系我!!!
- 怎么用switchhost
第一步:打开exe, 第二部:在 My hosts 里面直接添加路径 106.75.131.183 npm.kuaizitech.cn 第三部 :打开my hosts 保护好眼睛,早睡早起,多运动,k ...
- React.createElement 与 JSX
DOM 向JSX的演进 网页由 DOM 元素构成.React DOM 并不是浏览器的 DOM,而React DOM 只是用来告诉浏览器如何创建 DOM 的方法.通常情况下,我们并不需要 React 就 ...