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

本文主要是介绍使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

2. 安装sass

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

3. 安装Ant Design

npm i antd --save

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

配置步骤
1. 安装路由包react-router-dom
npm i react-router-dom2. 准备两个基础路由组件Layout和Login3. 在router/index.js文件中引入组件进行路由配置,导出router实例4. 在入口文件中渲染<RouterProvider />,传入router实例

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

什么是@别名路径?    --->   通过@替代src路径,方便开发过程中的路径查找访问如何配置?一. 针对路径转换,修改webpack别名路径配置craco1. 安装craco工具包npm i @craco/craco -D2. 增加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.css2. 然后在根目录下引入'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 echarts1. 主入口
/*** 针对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;}
}

这篇关于使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543695

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再