在Create React App中使用CSS Modules的方法示例


Posted in Javascript onJanuary 15, 2019

前提条件

请先进行全局安装 create-react-app 插件哈,安装命令:npm install create-react-app -g

先使用 create-react-app 命令下载一个脚手架工程,安装命令:

# 使用 npx
$ npx create-react-app my-app

# 使用 npm 
$ npm init npx create-react-app my-app

# 使用 yarn
$ yarn create react-app my-app

运行项目

$ cd my-app

# 使用 npm
$ npm start

# 或者使用yarn
# yarn start

在浏览器中输入 http://localhost:3000 查看项目效果

使用 CSS Module 的第一种方式

create-react-app 中内置了使用 CSS Modules 的配置,当前方式就是使用 create-react-app 内置的用法

方式

将所有的 .css/.lee/.scss 等样式文件都修改成 .module.css/.module.less/.module.scss 等。即可使用 CSS Modules 的方式进行引入使用了。

用法

编写一个 css 文件:Button.module.css

.error {
  background-color: red;
}

在编写一个普通的 css 文件:another-stylesheet.css

.error {
  color: red;
}

在 js 文件中使用 CSS Modules 的方式进行引用:Button.js

import React, { Component } from 'react';
import styles from './Button.module.css'; // 使用 CSS Modules 的方式引入
import './another-stylesheet.css'; // 普通引入

class Button extends Component {
 render() {
  // reference as a js object
  return <button className={styles.error}>Error Button</button>;
 }
}

在浏览器中查看效果

此时 Button 组件的背景颜色是红色,但是字体颜色却不是红色,因为使用了 Css Modules 之后,普通的 css 样式就不起效果了,需要用全局的方式编写才可以(:global)。 最后添加到元素上的样式结果为: <button class="Button_error_ax7yz">Error Button</button>

使用 CSS Module 的第二种方式

方式

在命令行运行 npm run eject 命令

此命令会将脚手架中隐藏的配置都展示出来,此过程不可逆

运行完成之后,打开 config 目录下的 webpack.config.js 文件,找到 test: cssRegex 这一行

在 use 属性执行的方法中添加 modules: true ,如下图:

在Create React App中使用CSS Modules的方法示例 

用法

和第一种方式的用法一致,只是不需要在 css 文件后面加 .module 后缀了

编写一个 css 文件:Button.css

.error {
  background-color: red;
}

再编写一个普通的 css 文件:another-stylesheet.css

.error {
  color: red;
}

在 js 文件中使用 CSS Modules 的方式进行引用:Button.js

import React, { Component } from 'react';
import styles from './Button.css'; // 可以直接使用 CSS Modules 的方式引入了
import './another-stylesheet.css'; // 普通引入

class Button extends Component {
 render() {
  // reference as a js object
  return <button className={styles.error}>Error Button</button>;
 }
}

在浏览器中查看效果

此时 Button 组件的背景颜色是红色,但是字体颜色却不是红色,因为使用了 Css Modules 之后,普通的 css 样式就不起效果了,需要用全局的方式编写才可以(:global)。 最后添加到元素上的样式结果为: <button class="Button_error_ax7yz">Error Button</button>

如想使用第二种方式对 sass 和 less 也使用 CSS Modules 的方式进行引用,则类似的在 sass 和 less 解析配置上也添加modules: true 即可。

注意

默认 create-react-app 脚手架不能直接使用 sass 和 less 直接编写 css,需要先进行相应配置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
jQuery UI设置固定日期选择特效代码分享
Aug 27 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
jQuery的ready方法实现原理分析
Oct 26 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
babel基本使用详解
Feb 17 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
vue中使用GraphQL的实例代码
Nov 04 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
Nov 08 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
Vue 样式绑定的实现方法
Jan 15 #Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 #Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 #Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 #Javascript
详解webpack引入第三方库的方式以及注意事项
Jan 15 #Javascript
JS高阶函数原理与用法实例分析
Jan 15 #Javascript
JS立即执行函数功能与用法分析
Jan 15 #Javascript
You might like
PHP 输出简单动态WAP页面
2009/06/09 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python入门篇之函数
2014/10/20 Python
Python计算回文数的方法
2015/03/11 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python爬取指定微信公众号文章
2018/12/20 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
为什么说python更适合树莓派编程
2020/07/20 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
高中生学习的自我评价
2013/12/14 职场文书
颁奖晚会主持词
2014/03/25 职场文书
学习雷锋倡议书
2014/04/15 职场文书
运动员口号
2014/06/09 职场文书
小学生运动会报道稿
2014/09/12 职场文书
参观邀请函范文
2015/02/02 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书