❤ React18 环境搭建项目与运行(地址已经放Gitee开源)

❤ React项目搭建与运行

环境介绍

node v20.11.0
react 18.2
react-dom  18.2.0

一、React环境搭建

第一种普通cra搭建

1、检查本地环境

node版本 18.17.0
在这里插入图片描述

检查node和npm环境
node -v
npm -v

2、安装yarn

npm install -g yarn
yarn --version

在这里插入图片描述

3、创建一个新的React项目

npx create-react-app ltbreact

4、进入并运行项目

// 进入项目
cd my_react
// 启动项目
yarn start项目启动成功,在浏览器 输入 http://localhost:3000/ 即可访问react

5、尝试打包

yarn build打包完成以后能在我们项目里面看到一个包

6、下载插件(安装xxx 插件 )

yarn add 插件名称

二、第二种方式vite搭建

1、检查本地环境

node版本 18.17.0
检查node和npm环境
node -v
npm -v

2、安装yarn

npm install -g yarn
yarn --version

3、使用vite创建一个新的React项目

npm create vite@latest 第一种版本yarn create vite ltbreact --template react-ts  //node大于20.0.0 才可以使用yarn create vite ltbreact --template react-js 

4、进入并运行项目

// 进入项目
cd my_react

//安装依赖
yarn

// 启动项目
yarn start (之前的)
yarn dev项目启动成功,在浏览器 输入 ​​ http://localhost:​​5173/​ 即可访问react
在这里插入图片描述

5、尝试打包

yarn build打包完成以后能在我们项目里面看到一个包
在这里插入图片描述

6、下载插件(安装xxx 插件 )

yarn add 插件名称

三、项目信息配置

1、项目目录

打开Vite构建的项目,项目的目录结构如下:

.
├── index.html
├── package.json
├── src
│   ├── App.css
│   ├── App.tsx
│   ├── favicon.svg
│   ├── index.css
│   ├── logo.svg
│   ├── main.tsx
│   └── vite-env.d.ts
├── tsconfig.json
└── vite.config.js

2、配置resolve.alias 文件导入路径别名

简单介绍一下:
resolve.alias 配置项通过别名来把原导入路径映射成一个新的导入路径。例如使用以下配置:

在项目的 vite.config.ts 之中配置:

默认跟文件为显示src的目录
默认跟组件目录为

// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path';// https://vitejs.dev/config/
export default defineConfig({plugins: [react()],resolve: {alias: {'@': path.resolve(__dirname, './src')}}
})

虽然配置好了@但是输入@没有提示,找到tsconfig.json

配置 tsconfig.json
// tsconfig.json
{"compilerOptions": {"paths": {"@/*": ["./src/*"],}}
}

在这里插入图片描述
配置 extensions ,省略文件路径的后缀名

3、添加请求方式axios

(1)安装axios并封装请求
安装axios并封装请求
yarn add axios在src下的utils工具类里面新建request.js文件封装axios请求```bash
import axios from 'axios'
const service = axios.create({baseURL: '/接口前缀', //import.meta.env.VITE_BASE_URLheaders: { 'Content-Type': 'application/json;charset=utf-8', },timeout: 5000,
})
export default service;
(2)写接口文件

在src下的api接口类里面新建common.js文件放接口请求
common.js 里面

import request from '@/utils/request.js'// 获取网站信息
export function getqueryWebInfo(params) {return request({url: '/你的接口地址',method: 'get',params})
}
(3)配置接口统一代理地址和相关信息

在vite.config.ts 里面封装接口同意请求的前缀并且配置接口代理

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path';
// https://vitejs.dev/config/
export default defineConfig({plugins: [react()],server: {host: true, //host设置为true才可以使用network的形式,以ip访问项目port: 8808, // 端口号https: false,open: false, //  true 自动打开浏览器自动打开浏览器cors: true, // 跨域设置允许// strictPort: true,  // 如果端口已占用直接退出proxy: {'/你的接口前缀': {target: '你的接口地址/', //线上版本changeOrigin: true,rewrite: (path) => path.replace(/^\/edu-admin/, '/edu-admin')},},}, resolve: {alias: {'@components': '/src/components','@': path.resolve(__dirname, './src')}}
})

请求接口成功
在这里插入图片描述

4、集成 react-router 路由

安装

yarn add react-router-dom

这里使用的版本是 "react-router-dom": "^6.21.2"

react router dom v6 支持配置路由 useRoutes(hook)实现

main.ts

在这里插入图片描述
在这里插入图片描述

使用React Router

需要注意的

react-router-dom从V5升级到V6后,有些使用做了一些改变;
(1) Switch 重命名为 Routes

// v5
<Switch><Route exact path="/"><Home /></Route><Route path="/profile"><Profile /></Route>
</Switch>// v6
<Routes><Route path="/" element={<Home />} /><Route path="profile/*" element={<Profile />} />
</Routes>

(2) Route 的新特性变更 ,component/render被element替代

import Profile from './Profile';// v5
<Route path=":userId" component={Profile} />
<Routepath=":userId"render={routeProps => (<Profile routeProps={routeProps} animate={true} />)}
/>// v6
<Route path=":userId" element={<Profile />} />
<Route path=":userId" element={<Profile animate={true} />} />

(3) 嵌套路由变得更简单

Route children 已更改为接受子路由。
比Route exact 和 Route strict更简单的匹配规则。
Route path 路径层次更清晰。

更多在后续文章React Router v5和React Router v6文章中

Router可以理解为路由器,分为BrowserRouter或HashRouter两个组件

(1)BrowserRouter创建的URL形式
http://xxx.com/some/path

(2)HashRouter创建的URL形式
http://xxx.com/#/some/path

React Router路由配置

配置App.js

(1)导入路由
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';(2) 导入登录组件和主页组件
import Login from './Login'; // 导入登录组件
import Home from './Home'; // 导入主页组件(3)借助Routes 配置路由 (已更改为Routes :具体原因可以看主页react错误分析篇章)<Router><Switch><Route exact path="/" component={Home} /> {/* 主页路径 */}<Route path="/login" component={Login} /> {/* 登录页路径 */}</Switch>
</Router>//更改后
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Login from '@/views/main/Login'; // 导入登录组件
import Home from '@/views/main/Home'; // 导入主页组件
function App() {return (<Router><Routes><Route path="/" element={<Home />} /> {/* 主页路径 */}<Route path="/login" element={<Login />} /> {/* 登录页路径 */}</Routes></Router>);
}export default App;

5、搭建主页面home

Home.jsx里面

import React from 'react';
import { Link } from 'react-router-dom';
const Home = () => {return (<div><h1>主页</h1><Link to="/login"><button>点击登录</button></Link></div>);
};export default Home;

搭建效果
在这里插入图片描述

6、搭建登录页面Login

Login.jsx里面

console.log('我是登录界面');
import React from 'react';
const Login = () => {return <h2>登录页面</h2>;
};export default Login;

搭建效果
在这里插入图片描述
到此,我们第一阶段项目的运行和基础搭建完成,路由也能正常访问和请求接口了

第二篇章【❤ React18 环境搭建项目与运行 (2)】

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

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

相关文章

ABAP 笔记--内表结构不一致,无法更新数据库MODIFY和UPDATE

目录 ABAP 笔记内表结构不一致&#xff0c;无法更新数据库MODIFY和UPDATE ABAP 笔记 内表结构不一致&#xff0c;无法更新数据库 MODIFY和UPDATE 如果是使用MODIFY或者UPDATE

Live800:从客户反馈中学习与改进,塑造卓越的企业客户服务

在当今的商业环境中&#xff0c;客户反馈已经成为企业改进产品和服务&#xff0c;提升客户满意度&#xff0c;增强品牌形象的重要工具。今天将以企业客户服务为例&#xff0c;探讨如何从客户反馈中学习和改进&#xff0c;包括收集客户反馈、分析客户反馈、实施改进措施等方面。…

数据结构之快速排序

快速排序的基本思想是&#xff1a; 通过一趟排序将待排的记录划分为独立的两部分&#xff0c;称为前半区和后半区&#xff0c;其中&#xff0c;前半区中记录的关键字均不大于后半区记录的关键字&#xff0c;然后再分别对这两部分记录继续进行快速排序&#xff0c;从而使整个序列…

(27)温度转换

文章目录 每日一言题目解题思路代码结语 每日一言 什么叫作失败&#xff1f;失败是到达较佳境地的第一步。——菲里浦斯 题目 题目链接&#xff1a;温度转换 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度&#xff0c;以 摄氏度&#xff08;Celsius&#xff0…

远程主机可能不符合 glibc 和 libstdc++ Vs Code 服务器的先决条件

vscode连接远程主机报错&#xff0c;原因官方已经公布过了&#xff0c;需要远程主机 glibc>2.28&#xff0c;所以Ubuntu18及以下版本没法再远程连接了&#xff0c;其他Linux系统执行ldd --version查看glibc版本自行判断。 解决方案建议&#xff1a; 不要再想升级glibc了 问题…

初探vue:掌握Vue的核心概念和基本用法(待续)

一、vue基本概念 它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;它采用mvvm&#xff08;Model-View-ViewModel&#xff09;架构模式&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue…

Golang GC 介绍

文章目录 0.前言1.发展史2.并发三色标记清除和混合写屏障2.1 三色标记2.2 并发标记问题2.3 屏障机制Dijkstra 插入写屏障Yuasa 删除写屏障混合写屏障 3.GC 过程4.GC 触发时机5.哪里记录了对象的三色状态&#xff1f;6.如何观察 GC&#xff1f;方式1&#xff1a;GODEBUGgctrace1…

Days 22 ElfBoard 基于QT的智慧家庭控制中心

1、项目介绍 1.1、项目功能简介 本项目基于elfboard开发板&#xff0c;利用qt搭建一个智慧家庭控制中心系统&#xff0c;该系统由四个部分组成&#xff1a;网络连接 、天气预报、室内环境监测和家具控制中心。网络连接部分的功能是扫描周围的wifi网络并连接&#xff0c;天气预…

C#入门及进阶|数组和集合(二):数组的初始化及元素访问

目录 1.数组的初始化 1. 1 一维数组初始化 1.2多维数组初始化 1.3 不规则数组初始化 2.数组的访问 2.1 一维数组的引用 2.2 多维数组的引用 2.3 不规则数组的引用 1.数组的初始化 1. 1 一维数组初始化 语法形式1&#xff1a; type [ ] arrayName new type [size] { …

Vue3——模板语法(文本插值、vue内置指令)

文章目录 文本插值{{}}受限的全局访问指令Directives指令的参数指令的修饰符vue3的内置指令渲染文本内容&#xff08;v-text&#xff09;渲染html &#xff08;v-html&#xff09;单项绑定&#xff08;v-bind&#xff09;单项绑定的使用单项绑定v-bind的简写同名简写动态绑定多…

机器学习 | 探索朴素贝叶斯算法的应用

朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等领域&#xff0c;并且在实际应用中表现出色。 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法&#xff1a; 1&#xff09;对于给定的待分类项r…

达梦数据库主备切换知识

一、切换模式 达梦数据库主备切换分为主动切换和被动切换模式 primary:主库状态 standby:备库状态 suspend;挂起状态,数据库会变成只读模式 主库正常切换的前提: 1、监视器正常 2、接管备库是 Standby 模式、Open 状态。 二、监视器模式 MON_DW_CONFIRM为1时为确认监视…

Architecture Lab:Part C【流水线通用原理/Y86-64的流水线实现/实现IIADDQ指令】

目录 任务描述 知识回顾 流水线通用原理 Y86-64流水线实现&#xff08;PIPE-与PIPE&#xff09; 开始实验 IIADDQ指令的添加 优化 ncopy.ys 仅用第四章知识&#xff0c;CEP11.55 8x1展开&#xff0c;CPE9.35 8x1展开2x1展开消除气泡&#xff0c;CPE8.10 流水线化通过…

算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希

大家好&#xff0c;我是星恒&#xff0c;今天给大家带来的是一道需要感觉规律的题目&#xff0c;只要读懂题目中的规律&#xff0c;就可以做出来了 这道题用到了哈希&#xff0c;还有一个关键点比较类似循环队列 题目&#xff1a;leetcode 2808 给你一个下标从 0 开始长度为 n…

C++ 值传递,引用传递,以及指针传递

值传递&#xff1a; 直接复制变量值给函数使用&#xff0c;函数内部不影响原变量。 引用传递&#xff1a; 不复制变量&#xff0c;而是提供对原变量的直接访问&#xff0c;函数内部操作可改变原变量值。 指针传递&#xff1a; 通过传递变量地址间接访问和操作变量&#xff0c;提…

Postman发送带登录信息的请求

环境&#xff1a;win10Postman10.17.7 假设有个请求是这样的&#xff1a; RequiresPermissions("tool:add") PostMapping(value"/predict") ResponseBody /** * xxx * param seqOrderJson json格式的参数 * return */ public String predictSampleIds(Req…

svg基础(三)分组、渐变

上一篇文章简单介绍了svg常用标签及其属性,本篇主要介绍分组&#xff0c;渐变 1 分组<g> 分组容器 添加到g元素上的变换会应用到其所有的子元素上添加到g元素的属性会被其所有的子元素继承定义复杂对象&#xff0c;可通过<use>元素引用 1.1 分组 <svg>&…

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…

Node.js+Express+Mysql服务添加环境变量

1、使用dotenv插件 1&#xff09;安装插件&#xff1a;npm install dotenv-cli --save-dev 2&#xff09;在项目根目录下添加对应的 .env 配置文件&#xff1b; // .env配置文件内容 MODEdevelopment, BASE_URLhttp://127.0.0.1:80813) 在启动命令中设置对应的加载文件&#…

springboot159基于springboot框架开发的景区民宿预约系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…