React 从0到1构建企业级框架基于Antd Designer

一、 create-react-app 创建 cms-front

二、 删除不必须要的文件形成如下结构

1. React版本为17版本 public 文件夹下保留 favicon.ico 偏爱图标+index.html资源文件
2.src 保留 index.js 入口文件和app.js(基于spa原则)单文件即可

在这里插入图片描述

三、配置eslint

1. 安装 eslint. npm install eslint
2.初始化eslint eslint --init
3. .eslintrc.js
module.exports = {
	env: {
		browser: true,
		es2021: true
	},
	extends: ['eslint:recommended', 'plugin:react/recommended', 'prettier'],
	overrides: [
		{
			env: {
				node: true
			},
			files: ['.eslintrc.{js,cjs}'],
			parserOptions: {
				sourceType: 'script'
			}
		}
	],
	parserOptions: {
		ecmaVersion: 'latest',
		sourceType: 'module'
	},
	plugins: ['react'],
	rules: {}
}
4. 配置 .eslintignore
.eslintrc.js
build/*.js
coverage
.vscode/*
public/*

四、配置prettier 美化代码

1. 安装 prettier. npm install prettier
2. 配置 .prettierrc.js
module.exports = {
  //指定一个制表符等于多少个空格。默认为 2。
  useTabs: true,
  //指定箭头函数参数是否永远使用圆括号。可以是 “always”、“avoid”、或 “as-needed”。默认为 “always”。
  arrowParens: "avoid",
  //指定每行代码的最大宽度。默认为 80。
  printWidth: 120,
  //指定一个制表符等于多少个空格。默认为 2。
  tabWidth: 2,
  // 指定是否在语句末尾添加分号。默认为 true。
  semi: false,
  //指定是否使用单引号而不是双引号。默认为 false。
  singleQuote: true,

  //指定是否在对象字面量中的括号之间添加空格。默认为 true。
  bracketSpacing: true,
  // 首次出现在1.15.0中
  // 由于历史原因,在文本文件中存在两种常用的行结尾的风格。那是\n(或LF换行)和\r\n(或CRLF用于回车+换行)。
  // 前者在 Linux 和 macOS 上很常见,而后者在 Windows 上很普遍。可以在维基百科上找到解释其原因的一些细节。
  // 默认情况下,Prettier 会保留给定文件已使用的行尾的风格。它还将一个文件中的混合行结尾转换为它在第一行末尾找到的结尾。
  // 当人们在不同操作系统上协作项目时,很容易在中央 git 存储库中找到混合行结尾。
  // Windows 用户也可能会意外地将已提交文件中的行结尾更改 LF 为 CRLF。
  // 这样做会产生很大的影响 git diff,如果在代码审查过程中没有注意到,那么file(git blame)的所有逐行历史都会丢失。
  // 如果你想确保你的 git 存储库在 Prettier 所涵盖的文件中只包含 Linux 风格的行结尾:
  // 1.将 endOfLine 选项设置为 lf
  // 2.配置一个 pre-commit 钩子,运行 Prettier
  // 3.配置 Prettier 在CI管道中运行 --check flag
  // 4.Windows用户在使用您的仓库之前,运行 git config core.autocrlf false,以便git 在 checkout 时不会转换 LF 为 CRLF。或者,您可以添加 * text=auto eol=lf 到 repo 的.gitattributes 文件来实现此目的。

  // 所有操作系统中的所有现代文本编辑器都能够在使用 \n(LF)时正确显示行结尾。但是,旧版本的 Windows 记事本会直观地将这些行压缩成一行。
  // 有效选项:

  // "auto" - 维护现有的行结尾(通过查看第一行之后使用的内容来标准化一个文件中的混合值)

  // "lf"- Line Feed only(\n),在 Linux 和 macOS 以及 git repos 内部很常见

  // "crlf"- 回车符+换行符(\r\n),在 Windows 上很常见

  // "cr"- 仅限回车符(\r),很少使用
  endOfLine: "auto",
  //指定是否在数组和对象字面量的末尾添加逗号。可能的值是 “none”、“es5”(在 ES5 中有效)和 “all”。默认为 “es5”。
  trailingComma: "none",
};

五、配置环境变量

1.项目根目录下构建环变量

(1).env.uat 开发环境
(2).env.pre 预生产环境
(3).env.prod 生产环境

2.环境变量文件里环境变量名的配置规范和要求

(1) 要以REACT_APP 开始 比如如下命名

#测试环境变量
#主机名
REACT_APP_HOST=localhost-uat.longfor.com
#端口号
REACT_APP_PORT=9000

六 、基于package.json 配置启动项

1. 安装 dotenv、dotenv-cli、react-app-rewired.
npm install dotenv
npm install dotenv-cli
npm install react-app-rewired
2.在package.json 文件中做如下配置
"scripts": {
    "uat": "dotenv -e .env.uat react-app-rewired start",
    "pre": "dotenv -e .env.pre react-app-rewired start",
    "prod": "dotenv -e .env.prod react-app-rewired start",
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

七、配置 config-overrides.js

1. 安装 customize-cra
npm install customize-cra
2.创建config-overrieds.js
3.配置文件内容如下

1.配置本地开发域名和端口号问题
2.按需引入Antd Designer 注意:5.0以上版本跟5.0以下版本引入不一样
3.配置less 注意less-loader问题,根据报错切换不同不同配置
4.配置别名,src 用@代替
5.配置代理,可以直接参考webpack的方式进行配置。
6.如果有各种报错可以参考如下连接

https://blog.csdn.net/weixin_45710060/article/details/125860525

config-overrides.js 代码如下:

const {
	override,
	addLessLoader,
	watchAll,
	adjustStyleLoaders,
	overrideDevServer,
	addWebpackAlias,
	fixBabelImports
} = require('customize-cra')
const path = require('path')

//设置端口号
process.env.PORT = process.env.REACT_APP_PORT
//设置主机名
process.env.HOST = process.env.REACT_APP_HOST

module.exports = {
	webpack: override(
		//使用lessLoader去加载主题色
		addLessLoader({
			javascriptEnabled: true,
			modifyVars: { '@primary-color': '#1DA57A' }
		}),
		//新版本的配置项调整成如下
		// addLessLoader({
		//   lessOptions: {
		//     javascriptEnabled: true,
		//     modifyVars: { '@primary-color': '#1DA57A' },
		//   }
		// }),

		adjustStyleLoaders(({ use: [, , postcss] }) => {
			const postcssOptions = postcss.options
			postcss.options = { postcssOptions }
		}),
		//使用@替代src增加别名
		addWebpackAlias({
			'@': path.resolve(__dirname, 'src')
		}),
		//导入antd导入
		fixBabelImports('import', {
			libraryName: 'antd',
			libraryDirectory: 'es',
			style: true
		})
	),
	devServer: overrideDevServer(config => {
		return {
			...config,
			//配置代理
			proxy: {
				'/api': {
					target: process.env.REACT_APP_APIURL,
					pathRewrite: {
						'^/api': ''
					}
				}
			}
		}
	}, watchAll())
}

八、页面如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

章六、集合(1)—— Set 接口及实现类、集合迭代、Map 接口、Collections类

一、 Set 接口及实现类 Set接口不能存储重复元素 Set接口继承了Collection接口。Set中所存储的元素是不重复的,但是是无序的, Set中的元素是没有索引的 Set接口有两个实现类: ● HashSet :HashSet类中的元素不能重复 ● TreeSet :可以给Set集…

低密度奇偶校验码LDPC(十)——LDPC码的密度进化

一、密度进化的概念 二、规则LDPC码的密度进化算法(SPA算法) 算法变量表 VN更新的密度进化 CN更新的密度进化 算法总结 程序仿真 参考文献 [1] 白宝明 孙韶辉 王加庆. 5G 移动通信中的信道编码[M]. 北京: 电子工业出版社, 2018. [2] William E. Ryan, Shu Lin. Channel Co…

Spring-AOP基础(全在这里)

八股文部分来源于网络,例子为原创 OOP(Object-oriented programming) 也就是面向对象编程,继承,封装,多态。 局限性 静态语言:类结构一旦定义,不容易被修改(并不是无法修改)。只能侵入性扩展&#xff1a…

太强了!最全的大模型检索增强生成(RAG)技术概览!

本文是对检索增强生成(Retrieval Augmented Generation, RAG)技术和算法的全面研究,对各种方法进行了系统性的梳理。文章中还包含了我知识库中提到的各种实现和研究的链接集合。 鉴于本文的目标是对现有的RAG算法和技术进行概览和解释&#…

【深度学习笔记】6_5 RNN的pytorch实现

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 6.5 循环神经网络的简洁实现 本节将使用PyTorch来更简洁地实现基于循环神经网络的语言模型。首先,我们读取周杰伦专辑歌词…

【C++】list模拟实现list迭代器失效问题

list模拟实现&list迭代器失效问题 一,list模拟实现1. list的主要框架接口模拟2. list构造&拷贝构造&析构3. list迭代器3.1 普通迭代器3.2 const迭代器 4. 增删查改 二,迭代器失效问题1. list的迭代器失效原因2. 解决办法 一,list…

个推与华为深度合作,成为首批支持兼容HarmonyOS NEXT的服务商

自华为官方宣布HarmonyOS NEXT鸿蒙星河版开放申请以来,越来越多的头部APP宣布启动鸿蒙原生开发,鸿蒙生态也随之进入全新发展的第二阶段。 作为华为鸿蒙生态的重要合作伙伴,个推一直积极参与鸿蒙生态建设。为帮助用户在HarmonyOS NEXT上持续享…

PostGIS 中的 K-Means 聚类操作及应用

K-Means算法: K-means 是数据科学和商业的基本算法。让我们深入了解一下。 1. K-means是一种流行的用于聚类的无监督机器学习算法。它是用于客户细分、库存分类、市场细分甚至异常检测的核心算法。 2. 无监督:K-means 是一种无监督算法,用于…

《MySQL数据库》day2--连接查询、子查询、union、limit、DML语句

文章目录 1.把查询结果去除重复记录 -》distinct2.连接查询2.1什么是连接查询?2.2连接查询的分类2.3笛卡尔积现象2.4内连接2.4.1内连接之等值连接。2.4.2内连接之非等值连接2.4.3内连接之自连接 2.5外连接2.6三张表,四张表怎么连接? 3.子查询…

从0到1入门C++编程——11 函数对象及算法介绍

文章目录 函数对象1、谓词2、内建函数对象(1) 算术仿函数(2) 关系仿函数(3) 逻辑仿函数 常用算法1、常用遍历算法(1) for_each(2) transform 2、常用查找算法(1) find和find_if(2) find_if(3) adjacent_find(4) binary_search(5) count(6) count_if 3、常用排序算法(1) sort(2)…

奇舞周刊第521期:实现vue3响应式系统核心-MVP 模型

奇舞推荐 ■ ■ ■ 实现vue3响应式系统核心-MVP 模型 手把手带你实现一个 vue3 响应式系统,代码并没有按照源码的方式去进行组织,目的是学习、实现 vue3 响应式系统的核心,用最少的代码去实现最核心的能力,减少我们的学习负担&…

序列化相关知识总结

目录 一、序列化1.1 基本概念1.1.1 序列化1.1.2 反序列化1.1.3 数据结构、对象与二进制串1.1.4 序列化/反序列化的目的 1.2 几种常见的序列化和反序列化协议1.2.1 XML&SOAP1.2.2 JSON(Javascript Object Notation)1.2.3 Protobuf 二、安卓下的序列化…

RabbitMQ中4种交换机的Java连接代码

目录 1.直连交换机(Direct) 生产者代码示例 消费者代码示例 2.RabbitMQ连接工具类 3.Fanout交换机(扇出交换机,广播) 生产者 消费者 4.Topic交换机(主题交换机) 生产者 消费者 5.Hea…

数据库-第六/七章 关系数据理论和数据库设计【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门: 第一章 绪论 第二/…

【Docker】容器的概念

容器技术:容器技术是基于虚拟化技术的,它使应用程序从一个计算机环境快速可靠地转移到另一个计算机环境中,可以说是一个新型地虚拟化技术。 一、docker容器 Docker:是一个开源地容器引擎Docker 是一种轻量级的容器化技术,其主要原…

阿里云服务器租用多少钱一个月?9元1个月?

阿里云服务器租用多少钱一个月?9元1个月?已经降价到5元一个月了。阿里云服务器1个月最低5元/月起,阿里云服务器价格可以按年、按月和按小时购买,本文阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器一个月收费价格表&#…

计算机系统结构-中断例题笔记

背景:计算机系统结构考试中,中断处理程序、运行程序的过程示意图是重要考点。 中断概念:CPU中止正在执行的程序,转去处理随机提出的请求,待处理完后,再回到原先被打断的程序继续恢复执行的过程。 考点1.设…

WPF 自定义彩色控制台功能

文章目录 前言环境流内容一个简单的控制台 自动添加数据无法添加数据模板代码添加参数简单的案例添加和清空功能完善代码 额外功能添加移动到底部添加样式 总结 前言 在WPF中添加模拟控制台,可以试试的看到最新的日志信息。但是普通的TextBlock只是纯粹的黑色&…

分布式执行引擎ray入门--(2)Ray Data

目录 一、overview 基础代码 核心API: 二、核心概念 2.1 加载数据 从S3上读 从本地读: 其他读取方式 读取分布式数据(spark) 从ML libraries 库中读取(不支持并行读取) 从sql中读取 2.2 变换数据…

html--彩虹马

文章目录 htmljscss 效果 html <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>Rainbow Space Unicorn</title> <link rel"stylesheet" href"css/style.css"> &l…