使用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;
    }
}

相关推荐

  1. React项目-Cesium地图初始化

    2023-12-28 10:16:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 10:16:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 10:16:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 10:16:03       87 阅读
  4. Python语言-面向对象

    2023-12-28 10:16:03       96 阅读

热门阅读

  1. C++ 图形界面的贪吃蛇。

    2023-12-28 10:16:03       49 阅读
  2. uniapp中各种状态的按钮

    2023-12-28 10:16:03       68 阅读
  3. conda环境配置torch+cuda+cudnn+dgl用到的一些命令

    2023-12-28 10:16:03       45 阅读
  4. 多元函数极值@条件极值

    2023-12-28 10:16:03       67 阅读
  5. Springboot2+mybatisplus+多数据源更换mysql数据库为pgsql

    2023-12-28 10:16:03       57 阅读
  6. Track-Anything 追踪万物

    2023-12-28 10:16:03       68 阅读
  7. 算法设计与分析 | 动态规划

    2023-12-28 10:16:03       52 阅读
  8. 【pg】多个字段查重过滤

    2023-12-28 10:16:03       74 阅读
  9. 如何用matlab制作游戏?

    2023-12-28 10:16:03       66 阅读
  10. C++ 中使用 std::map 的一个示例

    2023-12-28 10:16:03       56 阅读