create-react-app 如何使用 less/sass 和 react-css-modules?

简介: 本文详细介绍了在 create-react-app 项目中如何使用 less/sass 和 react-css-modules 来管理和应用样式。首先,通过安装相应依赖并配置 webpack 支持 less/sass;接着,介绍如何使用这些预处理器编写样式;最后,讲解了如何配置和使用 react-css-modules 实现样式的模块化管理,以及如何结合使用 less/sass 和 react-css-modules 提高开发效率和代码质量。

一、引言

在前端开发中,样式的处理是非常重要的一部分。React 作为一个流行的前端框架,有许多工具和技术可以帮助我们更好地管理和应用样式。create-react-app 是一个方便快捷的创建 React 项目的脚手架工具,它为我们提供了一个良好的开发基础。在实际开发中,我们经常会使用 less 或 sass 这样的预处理器来编写样式,同时也会使用 react-css-modules 来实现样式的模块化管理。本文将详细介绍在 create-react-app 项目中如何使用 less/sass 和 react-css-modules。

二、使用 less/sass

(一)安装相关依赖

要在 create-react-app 项目中使用 less 或 sass,我们首先需要安装相应的依赖。对于 less,我们可以使用以下命令进行安装:

npm install --save-dev less

对于 sass,我们可以使用以下命令进行安装:

npm install --save-dev node-sass

(二)配置 webpack

create-react-app 项目默认使用 webpack 进行打包,我们需要对 webpack 的配置进行一些修改,以支持 less 或 sass 的编译。在项目根目录下找到 config-overrides.js 文件,如果没有则需要手动创建。在这个文件中,我们可以添加以下代码来配置 less 或 sass 的编译:

  1. 配置 less
const {
    override, addLessLoader } = require('customize-cra');

module.exports = override(
  addLessLoader({
   
    javascriptEnabled: true,
  })
);
  1. 配置 sass
const {
    override, addSassLoader } = require('customize-cra');

module.exports = override(
  addSassLoader({
   
    data: '@import "~your-path-to-sass-variables.scss";',
  })
);

(三)使用 less/sass 编写样式

安装和配置完成后,我们就可以在项目中使用 less 或 sass 来编写样式了。在组件的样式文件中,我们可以使用相应的语法来定义样式。例如,在 less 文件中,我们可以使用以下语法:

@primary-color: #4285f4;

.button {
   
  background-color: @primary-color;
  color: #fff;
  padding: 10px 20px;
  border: none;
  cursor: pointer;
}

在 sass 文件中,我们可以使用以下语法:

$primary-color: #4285f4;

.button {
   
  background-color: $primary-color;
  color: #fff;
  padding: 10px 20px;
  border: none;
  cursor: pointer;
}

三、使用 react-css-modules

(一)安装依赖

要使用 react-css-modules,我们需要安装相应的依赖。可以使用以下命令进行安装:

npm install --save-dev react-css-modules

(二)配置 webpack

在使用 react-css-modules 之前,我们需要对 webpack 的配置进行一些修改。在项目根目录下找到 config-overrides.js 文件,在其中添加以下代码来配置 react-css-modules:

const {
    override, addDecoratorsLegacy, disableEsLint } = require('customize-cra');

module.exports = override(
  addDecoratorsLegacy(),
  disableEsLint(),
  {
   
    cssLoaderOptions: {
   
      modules: {
   
        localIdentName: '[name]__[local]__[hash:base64:5]',
      },
    },
  }
);

(三)使用 react-css-modules

在组件中使用 react-css-modules 非常简单。我们只需要在引入样式文件时,使用 cssModules 属性来启用样式模块。例如:

import styles from './styles.module.less';

function MyComponent() {
   
  return (
    <div className={
   styles.button}>
      Click me!
    </div>
  );
}

在上面的代码中,我们使用 styles.button 来应用样式。react-css-modules 会根据组件的名称和样式的名称生成一个唯一的类名,从而实现样式的模块化管理。

四、结合使用 less/sass 和 react-css-modules

(一)配置 webpack

要结合使用 less/sass 和 react-css-modules,我们需要对 webpack 的配置进行一些调整。在 config-overrides.js 文件中,我们可以添加以下代码来同时配置 less/sass 和 react-css-modules:

  1. 配置 less 和 react-css-modules
const {
    override, addLessLoader, addDecoratorsLegacy, disableEsLint } = require('customize-cra');

module.exports = override(
  addLessLoader({
   
    javascriptEnabled: true,
  }),
  addDecoratorsLegacy(),
  disableEsLint(),
  {
   
    cssLoaderOptions: {
   
      modules: {
   
        localIdentName: '[name]__[local]__[hash:base64:5]',
      },
    },
  }
);
  1. 配置 sass 和 react-css-modules
const {
    override, addSassLoader, addDecoratorsLegacy, disableEsLint } = require('customize-cra');

module.exports = override(
  addSassLoader({
   
    data: '@import "~your-path-to-sass-variables.scss";',
  }),
  addDecoratorsLegacy(),
  disableEsLint(),
  {
   
    cssLoaderOptions: {
   
      modules: {
   
        localIdentName: '[name]__[local]__[hash:base64:5]',
      },
    },
  }
);

(二)使用结合后的样式

在组件中使用结合后的样式时,我们可以同时使用 less/sass 的语法和 react-css-modules 的特性。例如,在 less 文件中,我们可以使用以下语法:

@primary-color: #4285f4;

.button {
   
  background-color: @primary-color;
  color: #fff;
  padding: 10px 20px;
  border: none;
  &:hover {
   
    background-color: darken(@primary-color, 10%);
  }
}

在上面的代码中,我们使用 less 的语法定义了样式,同时也使用了 react-css-modules 的特性来实现样式的模块化管理。

五、总结

在 create-react-app 项目中,使用 less/sass 和 react-css-modules 可以让我们更方便地管理和应用样式。通过安装相关依赖、配置 webpack、结合使用 less/sass 和 react-css-modules 等步骤,我们可以实现样式的预处理器和样式模块的结合,从而提高开发效率和代码质量。希望本文对大家有所帮助,让大家在 create-react-app 项目中能够更好地使用 less/sass 和 react-css-modules。**

目录
相关文章
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
349 59
|
12月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2898 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
574 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
XML 移动开发 前端开发
使用duxapp开发 React Native App 事半功倍
对于Taro的壳子,或者原生React Native,都会存在 `android` `ios`这两个文件夹,而在duxapp中,这些文件夹的内容是自动生成的,那么对于需要在这些文件夹中修改的配置内容,例如包名、版本号、新架构开关等,都通过配置文件的方式配置了,而不需要需修改具体的文件
|
存储 前端开发 开发者
深入了解 Sass 和 SCSS:CSS 预处理器的强大功能
Sass(Syntactically Awesome Stylesheets)是一个强大的 CSS 预处理器,为开发者提供了诸多高级特性,如变量、嵌套、混合、继承等,简化了 CSS 的编写和管理。SCSS 是 Sass 3 引入的新语法,完全兼容 CSS3,并增强了 Sass 的动态功能。本文详细介绍了 Sass 和 SCSS 的核心特性及其在实际开发中的应用,如变量定义、嵌套规则、混合、继承、以及常用的操作符与扩展功能。
661 0
|
前端开发 开发者 容器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
1491 0
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
261 0
|
前端开发 JavaScript
Vue 安装 CSS 预处理器(Less、Sass、Stylus)
Vue 安装 CSS 预处理器(Less、Sass、Stylus)
567 0
|
JavaScript 前端开发
Vite+Vue3+Vue-Router+Vuex+CSS预处理器(less/sass) 配置指南 —— 全网最详细系列
Vite+Vue3+Vue-Router+Vuex+CSS预处理器(less/sass) 配置指南 —— 全网最详细系列
Vite+Vue3+Vue-Router+Vuex+CSS预处理器(less/sass) 配置指南 —— 全网最详细系列

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    514
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    400
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    396
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    258
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    511
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    682
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1217
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    273
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1011
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    472