使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)

1. 整理项目结构,项目目录结构大致划分如下:

2. 安装sass

安装sass开发环境, 注意:使用的文件后缀名要用.scss

npm i sass -D

3. 安装Ant Design

npm i antd --save

4. 配置基础路由Router(具体可参考ReactRouter使用详解(react-router-dom))

配置步骤
1. 安装路由包react-router-dom
npm i react-router-dom

2. 准备两个基础路由组件Layout和Login

3. 在router/index.js文件中引入组件进行路由配置,导出router实例

4. 在入口文件中渲染<RouterProvider />,传入router实例

5. 配置@别名路径(具体可参考cra(create-react-app)配置别名路径@ 以及Vscode联想路径配置)

什么是@别名路径?    --->   通过@替代src路径,方便开发过程中的路径查找访问

如何配置?

一. 针对路径转换,修改webpack别名路径配置craco

1. 安装craco工具包

npm i @craco/craco -D

2. 增加craco.config.js配置文件(根目录下创建,与src同级)

// 扩展webpack的配置
const path = require('path')
module.exports = {
    // webpack 配置
    webpack: {
        // 配置别名
        alias: {
            // 约定:使用@表示src文件所在路径
            '@': path.resolve(__dirname, 'src')
        }
    }
}

3. 修改scripts命令(package.json内修改scripts)
"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "craco eject"
}

二. 针对联想提示,修改VSCode配置jsconfig.json(根目录下创建,与src同级)

{
    "compilerOptions": {
        "baseUrl": "./",
        "paths": {
            "@/*": [
                "src/*"
            ]
        }
    }
}




6. 安装axios,并封装request请求模块

一. 安装指令:
npm i axios

二. 在util文件夹下创建request.js文件,代码如下:

// axios的封装处理
import axios from 'axios';

// 1. 根域名配置
// 2. 超时时间
// 3. 请求拦截器 / 响应拦截器

const requset = axios.create({
    baseURL: 'http://geek.itheima.net/v1_0',
    timeout: 5000
})

// 添加请求拦截器
// 在请求发送之前,做拦截,可以插入一些自定义的配置[参数的处理]
requset.interceptors.request.use(config => {
    return config
}, error => {
    return Promise.reject(error)
})

// 添加响应拦截器
requset.interceptors.response.use(response => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response.data
}, error => {
    // 超出2xx 范围的状态码都会触发该函数
    // 对响应错误做点什么
    return Promise.reject(error)
})

export { requset }

三. 建议在util下创建index.js文件做一个统一中转工具模块函数,代码如下

// 统一中转工具模块函数
import {request} from './request';

export {
    request
}

7. 使用Redux(具体用法参考Redux与React环境准备、实现counter(及传参)、异步获取数据)

1安装redux
npm i react-redux @reduxjs/toolkit


8. 安装normalize.css初始化样式

1. npm i normalize.css

2. 然后在根目录下引入'normalize.css',具体代码如下

import React from 'react';
import ReactDOM from 'react-dom/client';
import { RouterProvider } from 'react-router-dom';
import { Provider } from 'react-redux';
import store from './store';
import router from './router';
import 'normalize.css';
import './index.scss';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Provider store={store}>
      <RouterProvider router={router} />
    </Provider>
  </React.StrictMode>
);


3. index.scss代码如下:

html,
body {
    margin: 0;
    height: 100%;
}

#root {
    height: 100%;
}




9. 使用gitee管理项目

目的:为了记录每次阶段性的功能,采取git管理我们的项目,方便复习

实现步骤
1. 在gitee上初始化一个空项目仓库

2. 把远程仓库和本地仓库关联

3. 提交代码到远程仓库

git add .
git commit -m '完成***功能'
git push

----------------------------------------以下是根据项目需求需要安装对应插件使用------------------------------

插件1:Echart(Examples - Apache ECharts)

npm i echarts

1. 主入口
/**
 * 针对echart进行封装组件后应用
 */
import BarEchart from './components/BarEchart'

export default function Home() {
    return (
        <div>
            <div>Home</div>
            {/* 需要给宽高才能渲染样式 */}
            <BarEchart title="三大框架满意度" />
            <BarEchart title="三大框架使用度" />
        </div>
    )
}

2. 封装的组件:
import * as echarts from 'echarts';
import { useEffect, useRef } from 'react';

const BarEchart = ({title}) => {
    const chartRef = useRef();
    useEffect(() => {
        const chartDom = chartRef.current;
        const myChart = echarts.init(chartDom);

        let option = {
            title: {
                text: title
            },
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    data: [120, 200, 150, 80, 70, 110, 130],
                    type: 'bar'
                }
            ]
        };

        option && myChart.setOption(option);
    }, [])

    return (
        <div ref={chartRef} style={{ width: 500, height: 400 }}></div>
    )
}

export default BarEchart;



插件2:富文本(react-quill)

/**
 * 1. 封装富文本编辑器使用(安装指令:npm i react-quill@2.0.0-beta.2 --legacy-peer-deps)
 * 2. 使用严格模式渲染时会出现两个富文本,因此要去掉严格模式
 */
import ReactQuill from "react-quill";
import 'react-quill/dist/quill.snow.css';
import './style.scss';

const Tinymce = ({placeholder}) => {
    return (
        <ReactQuill
            // 自己加的类名
            className="publish_quill"
            // 与上方quill.snow.css对应
            theme="snow"
            placeholder={placeholder || '请输入内容'}
        />
    )
}

export default Tinymce;




style.scss代码如下:

.publish_quill {
    .ql-editor {
        min-height: 300px;
    }
}

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

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

相关文章

具有置信度学习的困难感知注意力网络用于医学图像分割

Difficulty-Aware Attention Network with Confidence Learning for Medical Image Segmentation 具有置信度学习的困难感知注意力网络用于医学图像分割背景贡献难点&#xff1a;实验方法分割网络Segmentation Network&#xff08;分割网络&#xff09;Fully Convolutional Con…

2024财年Q2财报:大中华区增长放缓,耐克压不住国货势头?

“去库存”一直是耐克的关键词。 今年&#xff0c;有关耐克打折促销活动的公众号推文层出不穷&#xff0c;举办该活动的奥特莱斯门店也因此成为了年轻一代新的打卡圣地。以广州万国奥特莱斯于今年9月新开设的全球最大“NIKE优选体验店”为例&#xff0c;该店开业当天人气爆棚&…

ElasticSearch 搜索数据

精确查询 存在查询 Exists query 用于查询某个字段不为空的数据。如下所示&#xff0c;查询 age 不为空的 数据 POST user/_search {"query": {"exists": {"field": "age"}} }主键查询 通过 _id 字段查询数据 POST user/_search …

宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库

来源&#xff1a;宏集科技 工业物联网 宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库 原文链接&#xff1a;https://mp.weixin.qq.com/s/UEPtpTehdbFrw3MUCnuR2A 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 01 前言 在这个数字化时代&#xff0c;物…

Dubbo入门直接上手,结合微服务详解

Dubbo 高性能、轻量级的 Java RPC 框架 RPC&#xff1a; Remote Procedure Call 远程过程调用&#xff0c;简单来说就是它允许一个计算机程序通过网络请求调用另一个计算机上的程序&#xff0c;就像本地调用一样。有非常多的协议和技术来都实现了RPC的过程&#xff0c;比如&a…

第二课:布尔逻辑与逻辑门、二进制及算术逻辑单元

第二课&#xff1a;布尔逻辑与逻辑门、二进制及算术逻辑单元 第三章&#xff1a;布尔逻辑与逻辑门1、计算机为什么使用二进制2、布尔代数&布尔代数在计算机中的实现1&#xff09;NOT 操作2&#xff09;AND 操作3&#xff09;OR 操作 3、特殊的逻辑运算——异或4、逻辑门的符…

【Python】ubuntu python>3.9编译安装,及多个Python版本并存的使用方法

【Python】ubuntu python3.9编译安装&#xff0c;及多个Python版本并存的使用方法 1. 安装依赖2. 编译与安装2.1 依赖与源获取2.2 配置2.3 编译2.4 安装2.5 链接动态库 1. 安装依赖 更新系统软件 在正式开始之前&#xff0c;建议首先检查系统软件是否均为最新&#xff0c;并更…

处理urllib.request.urlopen报错UnicodeEncodeError:‘ascii‘

参考&#xff1a;[Python3填坑之旅]一urllib模块网页爬虫访问中文网址出错 目录 一、报错内容 二、报错截图 三、解决方法 四、实例代码 五、运行截图 六、其他UnicodeEncodeError: ascii codec 问题 一、报错内容 UnicodeEncodeError: ascii codec cant encode charac…

IDEA2023创建web项目

一、新建项目 点击File->New->Project...&#xff0c;如果是第一次创建项目则单击New Project 二、添加Web Application 建好的样子 把web移动到main目录下同时改名为webapp 三、不存在Add Framework Support添加Web Application 如何存在Add Framework Support&#…

Java - 工厂设计模式

Java - 工厂设计模式 一. 简介二. 例子2.1 定义抽象类2.2 定义子类2.3 创建工厂2.4 测试 三. JDK中使用工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 工厂设计模式…

分享11 种有用的 JavaScript 技巧

今天这篇文章&#xff0c;我想与你分享 11个有用的JavaScript实用小技巧&#xff0c;它们将极大地提高你的工作效率。 1.生成随机颜色的两种方式 1&#xff09;.生成RandomHexColor const generateRandomHexColor () > {return #${Math.floor(Math.random() * 0xffffff)…

keras 人工智能之VGGNet神经网络的图片识别

VGG16结构图 上期文章我们分享了如何使用VGGNet CNN网络结构搭建一个图片识别网络,以及训练了神经网络模型,利用上期训练好的神经模型,可以进行我们的图片识别 图片识别结果 导入第三方库 from keras.preprocessing.image import img_to_array from keras.models import …

关于工业环网交换机的应用知识,你了解多少?

我将与大家分享关于环网交换机的应用知识。环网交换机是一种用于环网交换的交换机设备。从它的名字来看&#xff0c;可以推断出它具备环形网络的功能。工业环网交换机是一种专门用于工业领域的特殊交换机。它具有冗余性和可靠性等优点。 因此&#xff0c;许多工业通信领域开始…

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿&#xff0c;我在之前那个MATS上面改一下就可以了&#xff0c;MAST项目&#xff1a;基于YOLOv8的多端车流检…

短视频矩阵系统:赋予用户创造与分享的力量

在如今快节奏的社交网络时代&#xff0c;人们对于信息获取和娱乐方式的需求也逐渐发生了变化。作为当下最受欢迎的短视频平台之一&#xff0c;抖音短视频矩阵系统正以其独特的魅力和吸引力&#xff0c;深深地打动着亿万用户。 抖音短视频矩阵系统是一种基于移动端的短视频分享…

【C Primer Plus第六版 学习笔记】第十四章 结构和其他数据形式

有基础&#xff0c;进阶用&#xff0c;个人查漏补缺 建立结构声明&#xff1a;描述该对象由什么组成&#xff0c;即结构布局 格式&#xff1a; 关键字 标记&#xff08;可选&#xff09;{结构 }&#xff1b; 举例&#xff1a; struct book{char title[2];char author[4];float …

保护电脑安全,火绒安全助手 V5.0

火绒安全软件&#xff0c;也称为“火绒安全助手”是一款由中国研发的综合安全软件。火绒安全软件旨在为计算机用户提供全面的安全保护&#xff0c;包括防病毒、反恶意软件、网络安全、系统优化等功能。 火绒安全的功能 病毒防护&#xff1a;火绒提供实时的病毒和恶意软件扫描…

年度征文|回顾2023我的CSDN

一年转眼而逝&#xff0c;回顾这一年在csdn的创作&#xff0c;学习&#xff0c;记录历程。回顾过去&#xff0c;才能展望未来&#xff0c;首先看图说话。 今年在csdn的访问量已由年初的2万到年末的50w。粉丝有年初的300个左右&#xff0c;增加到4000个左右。我年初的目标是粉丝…

nvm安装版本后设置默认镜像地址和nvm list available出现空白解决办法

如题 npm config get registry https://registry.npmjs.org/发现镜像地址依旧是默认的 解决 运行输入npm config list 查看这个选项对应的目录 修改为的内容如下 homehttps://npmmirror.com registryhttps://registry.npmmirror.com/或者也可以 homehttps://npmmirror.com…

【nw.js】使用nw.js将html页面打包成exe免安装程序

文章目录 一、批处理zip命令&#xff08;已有可跳过此步骤&#xff09;二、nw.js包三、使用批处理命令打包成exe可执行文件四、使用EnigmaVB打包成免安装可独立运行的exe文件五、结束 一、批处理zip命令&#xff08;已有可跳过此步骤&#xff09; 下载zip&#xff0c;你可以到该…
最新文章