在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 相关文章推荐
写出更好的JavaScript程序之undefined篇(中)
Nov 23 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
Firefox中使用outerHTML的2种解决方法
Jun 07 Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 Javascript
jquery使用hide方法隐藏指定id的元素
Mar 30 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
JavaScript定义函数_动力节点Java学院整理
Jun 27 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 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数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
初步讲解Python中的元组概念
2015/05/21 Python
python冒泡排序简单实现方法
2015/07/09 Python
浅析Python基础-流程控制
2016/03/18 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python模拟三级菜单效果
2017/09/11 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
人事代理委托书
2014/09/27 职场文书
债务纠纷起诉书
2015/05/20 职场文书
归途列车观后感
2015/06/17 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
python画条形图的具体代码
2022/04/20 Python