【专栏】在 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。

相关文章
|
6天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
29 3
|
1月前
|
前端开发 JavaScript 中间件
React脚手架create-react-app简介
【8月更文挑战第13天】React脚手架create-react-app简介
17 4
|
25天前
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
|
26天前
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
|
26天前
|
域名解析 网络协议 API
【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
|
2月前
|
前端开发 C++
CSS预处理器之Sass(一)
CSS预处理器之Sass(一)
22 2
|
2月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
46 0
|
2月前
|
JavaScript
Vite 项目中如何去集成 Sass
Vite 项目中如何去集成 Sass
32 0
|
2月前
|
前端开发
CSS预处理器之Sass(三)
CSS预处理器之Sass(三)
16 0
|
2月前
|
前端开发 JavaScript
CSS预处理器之Sass(二)
CSS预处理器之Sass(二)
19 0