react完整项目搭建的思路

react完整项目搭建的思路

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

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

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

go 复制代码
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关键词找到配置。

go 复制代码
'@':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文件
go 复制代码
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。
相关推荐
全球网站建设17 天前
从结构到交互:HTML5进阶开发全解析——语义化标签、Canvas绘图与表单设计实战
javascript·前端框架·php·reactjs·css3·html5
光影少年24 天前
react18更新哪些东西
前端·学习·reactjs
cxr82824 天前
Vercel AI SDK 3.0 学习入门指南
前端·人工智能·学习·react.js·typescript·npm·reactjs
光影少年1 个月前
react17更新哪些新特性
前端·reactjs
解道Jdon1 个月前
AI IDE冲击下JetBrains作死,IDEA埋订阅陷阱
javascript·reactjs
止观止1 个月前
React虚拟DOM的进化之路
前端·react.js·前端框架·reactjs·react
解道Jdon2 个月前
最新苹果液体玻璃Liquid Glass效果CSS实现
javascript·reactjs
菜鸡爱上编程2 个月前
React16,17,18,19更新对比
前端·javascript·reactjs·react
stormsha2 个月前
React与原生事件:核心差异与性能对比解析
前端·javascript·react.js·云原生·reactjs