【专栏】在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法

简介: 【4月更文挑战第29天】本文介绍了在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法。首先,通过 `npm` 安装 less 或 sass 依赖,然后修改 `config-overrides.js` 配置文件以支持 less/sass 编译。接着,详细阐述如何使用 less/sass 编写样式。再者,安装 react-css-modules 并配置 webpack,使能样式模块化。最后,展示了如何结合使用 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。

相关文章
|
2月前
|
运维 iOS开发 Windows
windows电脑备案ios APP获取公钥和证书指纹Sha-1值的方法
在阿里云进行APP备案、在备案IOS端的环节的时候,发现需要我们将p12证书安装在电脑上,再用xcode或或钥匙串访问来获取这个证书的公钥和sha-1值。 但是大部分开发uniapp应用的同学们,或者进行发布的运维人员的电脑都是windows,无法按照阿里云的教程来获取ios的公钥和sha-1。备案就被卡主了。 这里介绍下另一个方法,就是使用香蕉云编来在线上传证书获取。如下图所示,打开香蕉云编后,找到下图这个功能
518 0
|
6月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
283 62
|
4月前
|
存储 Linux 容器
【Container App】在容器中抓取网络包的方法
本文介绍在Azure Container App中安装tcpdump抓取网络包,并通过Storage Account上传抓包文件的方法。内容包括使用curl和nc测试外部接口连通性、长Ping端口、安装tcpdump、抓取网络包、以及通过crul命令上传文件至Azure Storage。适用于需要分析网络请求和排查网络问题的场景。
175 1
|
5月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
5月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
6月前
|
API Go 网络架构
【Azure Logic App】特殊的方法来停止正常步骤无法停止的Workflow Job
本文介绍了一种特殊方法,用于解决标准版Logic App在异常情况下无法正常停止的问题。当点击Cancel按钮报错“WorkflowRunCanNotBeCancelled”时,可通过以下步骤解决:进入Logic App的Kudu页面,定位到`C:\home\site\wwwroot`目录下的`host.json`文件,添加`Jobs.SuspendedJobPartition`和`Jobs.CleanupJobPartition`参数,并以大写格式设置值为`&quot;&lt;WORKFLOWID&gt;:2D&lt;RUNID&gt;&quot;`。调整后可成功停止异常Job
183 19
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2266 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
8月前
|
存储 JavaScript
(ERP系统查看DWG)MxCAD APP调用内部弹框的方法
MxCAD APP 二次开发提供了调用项目内部弹框的接口,以保持样式统一。用户需创建 `test_dialog` 文件夹并依次创建 `dialog.ts`、`dialog.vue` 和 `index.ts` 文件来注册、构建和渲染弹框。通过 `useDialogIsShow` 钩子函数控制弹框显示,并可在方法中直接调用 `dialog.showDialog()` 来控制弹框显隐。此外,还支持监听确认或取消事件获取数据,以及通过配置 `vite.config.ts` 解决样式冲突问题。最终在 `src/index.ts` 中引入相关文件即可实现弹框功能。
|
前端开发
css页面顶部底部固定,中间自适应几种方法
【10月更文挑战第22天】css页面顶部底部固定,中间自适应几种方法

热门文章

最新文章