react 高效高质量搭建后台系统 系列 —— antd和样式
其他章节请看:
antd
后续要做登录模块(主页),不仅要解决请求数据的问题,还需要完成 antd 配置以及样式的准备。
antd 多种主题风格
详情请看 这里
spug 没有提供多种主题风格。
笔者还是决定稍作研究,万一公司需要呢。
步骤如下:
- 安装 less less-loader。前文已经安装
- 修改 config-overrides.js
// config-overrides.js
-const { override, fixBabelImports,addWebpackAlias } = require('customize-cra');
+const { addLessLoader, override, fixBabelImports, addWebpackAlias, adjustStyleLoaders } = require('customize-cra');
const path = require('path')
module.exports = override(
fixBabelImports('import', {
libraryName: 'antd',
libraryDirectory: 'es',
- style: 'css',
+ style: true,
+ }),
+ addLessLoader({
+ lessOptions: {
+ javascriptEnabled: true,
+ modifyVars: { '@primary-color': '#1DA57A' },
+ }
+ }),
+ // 网友`阖湖丶`的介绍,解决:ValidationError: Invalid options object. PostCSS Loader has been initialized...
+ adjustStyleLoaders(({ use: [, , postcss] }) => {
+ const postcssOptions = postcss.options;
+ postcss.options = { postcssOptions };
}),
addWebpackAlias({
重启后,蓝色按钮变成绿色按钮说明成功。
Tip: 测试过程中如果发现按钮是灰色,或错误出不来,可以尝试修改按钮(例如 <Button type="primary">Primary Button重新编译</Button>)使其重新编译。
多种主题风格到此只是完成了部分,剩余请根据需求自行完成。比如定义深色、浅色两种主题,那么样式文件如何组织,自定义的组件样式呢?可以从一个模块入手,验证方案可行性。
疑惑:antd 官网说显示绿色按钮说明成功,可是笔者将颜色改为其他颜色,例如红色(#xxxxxx),多次重启后仍是绿色。时间紧迫,需求不定,暂时放弃研究。
antd 国际化
antd 默认文案是英文,如果使用其他语言则需要配置。
例如在 HellowWord.js 中使用分页组件:
//myspug\src\HelloWord.js
import { Pagination } from 'antd';
export default function HelloWorld() {
return <div>
hello world!
<Pagination defaultCurrent={6} total={500} />
</div>
}
浏览器中显示10/page的英文。
spug 中 antd 国际化用法如下所示:
// spug\src\index.js
import { ConfigProvider } from 'antd';
import zhCN from 'antd/es/locale/zh_CN';
<ConfigProvider locale={zhCN}>
<App/>
</ConfigProvider>
我们参考 spug 也给 myspug 增加 antd 国际化:
// myspug\src\index.js
+import { ConfigProvider } from 'antd';
+import zhCN from 'antd/es/locale/zh_CN';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
- <App />
+ <ConfigProvider locale={zhCN}>
+ <App />
+ </ConfigProvider>
+
</React.StrictMode>
);
刷新页面,发现分页组件已经是中文(10 条/页)
Tip:ConfigProvider 是 antd 提供了一个 React 组件,用于全局配置国际化文案。ConfigProvider 使用 React 的 context 特性,只需在应用外围包裹一次即可全局生效
样式
详情请看 这里
spug 中样式有如下几种用法:
.css文件(仅1处).less(0处)- 样式模块化
.module.css(9处) - 样式模块化
.module.less(9处)
.css
.css 文件(仅1处)。在入口页引入 css 做 css 的全局设置。代码如下:
/* spug\src\index.css */
/* 引入 antd 的样式。我们不需要 */
@import '~antd/dist/antd.css';
/* 下面则是全局设置 */
body {
font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow: hidden;
}
div::-webkit-scrollbar, textarea::-webkit-scrollbar {
width: 6px;
height: 6px;
}
div::-webkit-scrollbar-thumb, textarea::-webkit-scrollbar-thumb {
border-radius: 6px;
background: rgba(0, 0, 0, .2);
}
code {
font-family: Source Code Pro, Menlo, Monaco, Consolas, Courier New, monospace, Courier, PingFang SC, Microsoft YaHei;
}
.ant-form-item-extra {
font-size: 13px;
padding-top: 6px;
}
.none {
display: none;
}
我们不需要@import '~antd/dist/antd.css';,前文我们以及解决了 antd 按需引入 css。如果 myspug 没有特殊要求,则可以将 spug 中全局设置拷贝过来。
.module.css
样式模块化 .module.css(9处)
例如任务计划模块中的 css(index.module.css):
/* spug\src\pages\schedule\index.module.css */
/* 样式模块化 */
/*
用法:
import styles from './index.module.css';
<Steps current={store.page} className={styles.steps}>
...
</Steps>
*/
.steps {
width: 520px;
margin: 0 auto 30px;
}
.delIcon {
font-size: 24px;
position: relative;
top: 4px;
color: #999999;
}
.delIcon:hover {
color: #f5222d;
}
.formContainer .tabs {}
在登录模块中有如下写法(.formContainer .tabs {}和styles.tabs),这是什么意思?
.formContainer {
background-color: rgba(29,52,110,0.65);
....
}
/* 用法:<Tabs className={styles.tabs}> */
.formContainer .tabs {
margin-bottom: 10px;
color: #fff;
border: 1px solid red;
}
请看完整示例:

最终效果是蓝色边框(红色边框被覆盖)和灰色背景,绿色边框由于父元素 formContainer3 没有使用则不生效。
:global
:global 是什么意思?
.roleUser :global(.ant-popover-inner-content) {
padding: 0;
}
global 声明的 class,不会被编译。可以用来覆盖 antd 的默认样式。

.pingfen > span
.pingfen > span 的用法是 styles.pingfen,span 不会被编译。就像这样:

.module.less
样式模块化 .module.less(9处)
下面这段代码很典型了,用法其实和 .module.css 类似:

其他章节请看:
react 高效高质量搭建后台系统 系列 —— antd和样式的更多相关文章
- 使用vue1.0+es6+vue-cli+webpack+iview-ui+jQuery 撸一套高质量的后台管理系统
首先按照vue.js官网的指令安装: 1.本地安装好node.js 2.根据官方命令行工具 详情 这样一个官方的脚手架工具就已经搭建好了:但是有一点需要注意的是由于现在按照官方的搭建方法是搭建vue2 ...
- 建站集成软件包 XAMPP搭建后台系统与微信小程序开发
下载安装XAMPP软件,运行Apache和MySQL 查看项目文件放在哪个位置可以正常运行 然后访问localhost即可 下载weiphp官网的weiapp(专为微信小程序开发使用)放在htdocs ...
- 编写高质量的Python代码系列(八)之部署
Python提供了一些工具,使我们可以把软件部署到不同的环境中.它也提供了一些模块,令开发者可以把程序编写的更加健壮.本章讲解如何使用Python调试.优化并测试程序,以提升其质量与性能. 第五十四条 ...
- 编写高质量的Python代码系列(一)之用Pythonic方式来思考
Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢 ...
- nodejs 从helloworld到高质量的后台服务server的一点思考
---恢复内容开始--- 新公司用的nodejs作为app和网站的后台服务server,所以最近对nodejs一直在学习,加上之前简单的学习了一点,看了两天后台接口源码,所以就直接上手干活了,下面是我 ...
- 编写高质量的Python代码系列(七)之协作开发
如果多个人要开发同一个Python程序,那就得仔细商量代码的写法了.即使你是一个人开发,也需要理解其他人所写的模块.本节讲解多人协作开发Python程序时所用的标准工具及最佳做法. 第四十九条:为每个 ...
- 编写高质量的Python代码系列(六)之内置模块
Python预装了许多写程序时会用到的重要模块.这些标准软件包与通常意义上的Python语言联系得非常精密,我们可以将其当成语言规范的一部分.本节将会讲解基本的内置模块. 第四十二条:用functoo ...
- 编写高质量的Python代码系列(五)之并发与并行
用Python可以很容易就能写出并发程序,这种程序可以在同一时间做许多间不同的事情.我们也可以通过系统调用.子进程(subprocess)及C语言扩展来实现并行处理. 第三十六条: 用subproce ...
- 编写高质量的Python代码系列(四)之元类及属性
元类(metaclass)及动态属性(dynamic attribute)都是很强大的Python特性,然后他们也可能导致及其古怪.及其突然的行为.本节讲解这些机制的常见用法,以确保各位程序员写出来的 ...
- 编写高质量的Python代码系列(三)之类与继承
用Python进行编程时,通常需要编写心累,并定义这些类应该如何通过其接口及继承体系与外界交互.本节讲解如何使用类和继承来表达对象所以更具备的行为. 第二十二条:尽量用辅助类来维护程序的状态,而不要用 ...
随机推荐
- Springboot 之 Filter 实现超大响应 JSON 数据压缩
简介 项目中,请求时发送超大 json 数据外:响应时也有可能返回超大 json数据.上一篇实现了请求数据的 gzip 压缩.本篇通过 filter 实现对响应 json 数据的压缩. 先了解一下以下 ...
- ExceptionHandler配合RestControllerAdvice全局处理异常
Java全局处理异常 引言 对于controller中的代码,为了保证其稳定性,我们总会对每一个controller中的代码进行try-catch,但是由于接口太多,try-catch会显得太冗杂,s ...
- MybatisPlus生成主键策略方法
MybatisPlus生成主键策略方法 全局id生成策略[因为是全局id所以不推荐] SpringBoot集成Mybatis-Plus 在yaml配置文件中添加MP配置 mybatis-plus: g ...
- .NET周报【10月第2期 2022-10-17】
主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...
- JUC(8)Stream流式计算
文章目录 1.ForkJoin 1.ForkJoin ForkJoin 在JDK1.7 ,并执行任务!提高效率,大数据量 大数据:Map Reduce (把大任务拆分为小任务) ForkJoin特点: ...
- vue3学习记录(新特性)
总概 1) 性能提升 打包大小减少 41% 初次渲染快 55%,更新渲染快 133% 内存减少 54% 使用 Proxy 代替 defineProperty 实现数据响应式 重写虚拟 DOM 的实现和 ...
- JUC中的AQS底层详细超详解
摘要:当你使用java实现一个线程同步的对象时,一定会包含一个问题:你该如何保证多个线程访问该对象时,正确地进行阻塞等待,正确地被唤醒? 本文分享自华为云社区<JUC中的AQS底层详细超详解,剖 ...
- element-ui el-table 高度自适应
element-ui el-table 高度自适应 <div ref="searchHeader" class="div_search search_title& ...
- CF39H
前言 谁来给我讲讲九九乘法表啊. 以上菲克向. \(\sf{Solution}\) 看题上来就是数据范围 \(2\leq k\leq 10\) ,显然打表可以轻松水过,数据这么小,手算是没问题的啦. ...
- pod(七):静态pod
目录 一.系统环境 二.前言 三.静态pod 3.1 何为静态pod 3.2 创建静态pod 3.2.1 使用--pod-manifest-path指定静态pod目录 3.2.2 静态pod默认目录/ ...