react完整项目搭建的思路

news2024/11/26 20:48:29

react完整项目搭建的思路

  • react完整项目搭建的思路
    • 1.使用creacte-react-app初始化项目
    • 2.安装所需插件:路由、网络、样式、组件库
    • 3.reactjs目录结构组织
    • 4. 配置@路径别名
    • 4.配置路由
    • 5.网络配置,对axios进行封装
      • 》获取当前环境变量
    • 6.配置代理解决跨域
    • 7.配置使用iconfont
    • 8.状态管理

1.使用creacte-react-app初始化项目

  • 依赖安装create-react-app
npm install -g create-react-app
或是
yarn add -g create-react-app
  • 项目初始化
create-react-app my-app
  • 运行
yarn start

2.安装所需插件:路由、网络、样式、组件库

yarn add react-router-dom axios less-loader antd

react默认支持用scss,不支持less,直接使用less时会报错,因此当使用less的时候需要进行额外配置。至于技术选型选择less或scss完全取决于你的个人偏好。
less配置篇[推荐方法二]

早期并没有 React-Hooks 的加持,函数组件内部无法定义和维护 state,因此它还有一个别名叫“无状态组件”。
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下,使用 state 以及其他的 React 特性。

由于官方对于函数式组件的支持越来越友好,建议使用函数式组件而非类式组件。这里我会使用函数式组件的的方式进行项目的构建,请跟上!node版本18.18.1,下图是项目相关依赖版本。
在这里插入图片描述

3.reactjs目录结构组织

https://www.zhihu.com/question/50750032

4. 配置@路径别名

1.看完以上的解决方式,你或许已经使用npm run eject将webpack暴露出来了,这时候你可以找到在文件config/webpack.config.js搜索alias关键词找到配置。
在这里插入图片描述

'@':path.resolve('src')

2.未暴露webpack.config.js配置文件的情况,使用craco插件实现,【请参考】

4.配置路由

可以参考

5.网络配置,对axios进行封装

参考,一些实际的内容可以根据实际需求修改代码。记住没有完美的axios封装方案,能用就行了。

以下为实际开发中产生的一些疑问。

》获取当前环境变量

在React应用中,获取运行环境(如开发环境、生产环境)通常涉及到对当前环境变量的检测。这通常在构建过程中由构建工具(如Webpack或Rollup)通过定义不同的环境变量来实现。以下是如何在React中获取运行环境的几种常见方法

使用process.env.NODE_ENV是一个全局变量,用于标识当前的运行环境。

if (process.env.NODE_ENV === 'development') {
  console.log('当前为开发环境');
} else if (process.env.NODE_ENV === 'production') {
  console.log('当前为生产环境');
}

6.配置代理解决跨域

当使用axios进行网络请求的时候出现了跨域问题
在这里插入图片描述

  • 最简单不过直接在src下增加一个setupProxy.js文件
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function (app) {
    app.use(
        '/api',
        createProxyMiddleware({
            target: 'http://127.0.0.1:8081',//后台服务地址以及端口号
            changeOrigin: true,//是否跨域
            pathRewrite: {   
            //使用代理, 首先需要有一个标识, 标明哪些连接需要使用代理,只有有标识的连接才用代理。”/api”就是告知,接口以”/api”开头的才用代理,所以写请求接口时要使用“/api/xx/xx”的形式,使用代理后生成的请求路径就是’http://localhost:8083/api/xx/xx’.
            //当实际需要请求的路径里面没有”/api“时. 就需要 pathRewrite,用’’^/api’’:’’, 把’/api’去掉, 这样既能有正确标识, 又能在请求到正确的路径。
                "^/api": "/"
            },
        })
    );
};
//以上!当发起网络请求的时候可以是
axios.get('/api/user').then(function (response) {})
  • 如果你按照我的节奏安装使用了craco插件,你可以直接在craco.config.js中修改配置。
//配置代理解决跨域
    devServer: {
        port:3000,
        proxy: {
            '/': {
                target: 'http://192.168.0.17:8002/',
                changeOrigin: true,
            },
        }
    },
  • 还有一些使用插件解决的放式,请参考解决,当然你也可以交给后端去处理跨域问题,嘻~

7.配置使用iconfont

下载iconfont包之后可以删除以下几个文件,然后将iconfont.css全局引入就可以使用了。
在这里插入图片描述

8.状态管理

推荐:

  1. 中小型项目使用 react自带的context;
  2. 复杂项目的状态管理:Rematch,Jotai,Hookstate。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产品推荐 | BittWare基于Altera Agilex“M FPGA的lA-860m加速卡

01 产品概述 BittWare的lA-860m是一款Altera Agilex“M系列FPGA卡,针对吞吐量和内存密集型应用进行了优化。M 系列 FPGA 具有广泛的内存层次结构,包括集成高带宽存储器 (HBM2e) 和硬内存片上网络 (NoC)&am…

GitHub Desktop进行汉化

第一步下载github桌面版 官网:安装 GitHub Desktop - GitHub 文档 历史版本:https://github.cn.uptodown.com/windows/versions 本期下载版本3.3.11进行汉化,最新版不一定稳定。 网站打不开的可自取: 3.3.11版本安装包链接&a…

电子阅览室技术特点与应用分析

电子阅览室是一个开放式的硬件和软件的集成平台,通过对技术和产品的集成,把当前大量的各种文献载体数字化,将它们组织起来在网上服务。从理论上讲,数字图书馆是一种引入管理和应用数字化技术的方法,它的主要特点有&…

原生IP和住宅IP有什么区别?

原生IP和住宅IP在多个方面存在显著的区别。 从定义和来源来看,原生IP是指未经NAT(网络地址转换)处理的真实、公网可路由的IP地址,它直接从互联网服务提供商(ISP)获得,而不是通过代理服务器或VP…

Java进阶-JavaStreamAPI的使用

本文全面介绍了 Java Stream API 的概念、功能以及如何在 Java 中有效地使用它进行集合和数据流的处理。通过详细解释和示例,文章展示了 Java Stream API 在简化代码、提高效率以及支持函数式编程方面的优势。文中还比较了 Java Stream API 与其他集合处理库的异同&…

matlab学习007-已知离散时间系统的系统函数并使用matlab绘制该系统的零极点图;判断系统的稳定性;幅频和相频特性曲线

目录 题目 离散时间系统的系统函数:H(z)(3*z^3-5*z^210z)/(z^3-3*z^27*z-5) 1,绘制该系统的零极点图 1)零极点图 2)代码 2,判断系统的稳定性 1)判断结果 2)代码 3,试用MATL…

SpringMVC基础篇(四)

文章目录 1.视图1.基本介绍1.视图介绍2.为什么需要自定义视图 2.自定义视图实例1.思路分析2.代码实例1.view.jsp2.接口3.配置自定义视图解析器springDispatcherServlet-servlet.xml4.自定义视图MyView.java5.view_result.jsp6.结果展示 3.自定义视图执行流程4.自定义视图执行流…

最新官方破解版会声会影2024永久序列号和激活码

会声会影2024是一款功能强大的视频编辑软件,它集合了视频剪辑、音频调整、特效添加等多项功能于一身,为用户提供了一个全面且易用的视频制作平台。无论是初学者还是专业视频编辑人员,都能在这款软件中找到满足自己创作需求的工具。 会声会影最…

生成对抗网络的无载体信息隐藏算法简介

一、研究背景 随着互联网技术的广泛应用和移动智能设备的快速普及,人们有了更多的途径传播和获取信息。每天海量的数据以视频、音频、图像、文字等各类形式在互联网中产生,这为人们的生活带来了极大的便利,但同时也引起了人们对信息泄露的担…

《QT实用小工具·四十六》多边形窗口

1、概述 源码放在文章末尾 该项目实现了可以移动的多边形窗口&#xff0c;项目demo演示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include "polygonwindow.h"#include <QBitmap> #include <QQuickItem> #include <QQmlFile> #in…

[NeurIPS-23] GOHA: Generalizable One-shot 3D Neural Head Avatar

[pdf | proj | code] 本文提出一种基于单图的可驱动虚拟人像重建框架。基于3DMM给粗重建、驱动结果&#xff0c;基于神经辐射场给细粒度平滑结果。 方法 给定源图片I_s和目标图片I_t&#xff0c;希望生成图片I_o具有源图片ID和目标图片表情位姿。本文提出三个分支&#xff1a;…

AI大模型探索之路-训练篇7:大语言模型Transformer库之HuggingFace介绍

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

Web前端开发之CSS_2

关系选择器CSS盒子模型弹性盒子模型文档流浮动清除浮动定位 1. 关系选择器 1.1 后代选择器 E F{} 选择所有被 E 元素包含的 F 元素&#xff0c;中间用空格隔开 <ul> <li>后代列表1</li> <div> <ol> <li>后代列表2</li> </ol>…

20240428如何利用IDM下载磁链视频

缘起&#xff1a; https://weibo.com/tv/show/1034:4864336909500449 中国获奖独立纪录片《阿辉》揭秘红灯区“教父”的生存法则 5,751次观看 1年前 发布于 陕西 身为里中横 67.7万粉丝 互联网科技博主 微博原创视频博主 头条文章作者 https://weibo.com/tv/show/1034:4864…

深度学习:基于Keras框架,使用神经网络模型对葡萄酒类型进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

数据结构 - C/C++

快速跳转 数组链表栈队列串树 目录 数据结构 逻辑结构 物理结构 数据结构 数据 数据不仅仅包括整型、实型等数值类型&#xff0c;还包括字符及声音、图像、视频等非数值类型。 计算机可以理解并按照指定格式处理。 结构 元素相互之间存在一种或多种特定关系的数据集合。 …

Docker如何开启远程访问?

Docker是一种开源的容器化平台&#xff0c;通过将应用程序和其依赖项打包成容器&#xff0c;可以实现快速部署、弹性运行和简化管理。默认情况下&#xff0c;Docker的运行环境是局域网内的单机&#xff0c;但有时我们需要在不同地区的电脑、设备之间进行远程通信。本篇文章将介…

上市企业数字赋能指数数据集-2001到2022年(TF-IDF)

01、数据简介 上市公司数字赋能指数是一个用来衡量上市公司利用数字技术提高业务能力和效率的指标。这个指数反映了上市公司利用大数据、云计算和人工智能等数字技术&#xff0c;高效地利用商业资源和信息&#xff0c;并扩展供应关系的能力。市公司数字赋能指数是一种综合性的…

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基…

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…