React H5设置企业级v6版本路由的配置
路由配置是项目开发的必要一环,尤其是目前流行SPA,下面看看如何使用v6版本路由进行合理的H5路由配置
一、基本页面结构(目录根据开发要求建,下面仅用于展示配置路由)

二、具体文件实现
1. index.tsx
import React from "react";
import ReactDOM from "react-dom/client";
import vconsole from "vconsole";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import "normalize.css/normalize.css";
import routes from "./router";const BASENAME = "/h5";const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement
);const router = createBrowserRouter(routes, { basename: BASENAME });root.render(<React.StrictMode><RouterProvider router={router} /></React.StrictMode>
);if (process.env.NODE_ENV === "development" ||window.location.search.includes("debug=true")
) {new vconsole();
}
2. App.tsx
import { Suspense } from "react";
import { AliveScope } from "react-activation";
import { Outlet } from "react-router-dom";function App() {return (<Suspense><AliveScope>{/* Outlet是React Router v6中的一个组件,用于在嵌套路由中渲染子路由的组件。它充当一个占位符,表示在这个位置将渲染匹配的子路由组件。 */}<Outlet /></AliveScope></Suspense>);
}export default App;
3. ./router/index.tsx
import App from "@/App";
import type { RouteObject } from "react-router";
import { Navigate } from "react-router-dom";
// @loadable/component 是一个用于 React 应用程序的库,主要用于实现代码拆分和懒加载。它允许你将组件按需加载,从而减少初始加载时间,提高应用性能。
// 官网:https://loadable-components.com/docs/getting-started/
import loadable from "@loadable/component";
import mainRoutes from "./mainRoutes";
import userRoutes from "./userRoutes";const NotFound = loadable(() => import("@/pages/NotFound"));// 在路由的第一层应该在前面加上【/】
// 在 children 里面不需要加【/】,对于嵌套路由,子路径通常不需要以斜杠 (/) 开头,因为它们是相对于父路径解析的。
let routes: RouteObject[] = [{path: "/",element: <App />,children: [mainRoutes, userRoutes],},// 匹配不准确的路由,跳转到 404 页面{path: "*",element: <NotFound />,},
];const Devtool = loadable(() => import("@/pages/Devtool"));// 如果是开发环境,添加 devtool 页面,用于快速页面跳转
if (process.env.NODE_ENV === "development") {routes = [{path: "/",element: <Navigate to={"devtool"} replace />,},{path: "/devtool",element: <Devtool />,},...routes,];
}export default routes;
4. ./router/mainRoutes.tsx
import type { RouteObject } from "react-router";
import KeepAlive from "react-activation";
import { lazy } from "react";
import { Navigate } from "react-router-dom";const MainLayout = lazy(() => import("@/pages/Main/Layout"));const MainList = lazy(() => import("@/pages/Main/List"));const MainDetail = lazy(() => import("@/pages/Main/Detail"));/*** 主要业务内容路由*/
const mainRoutes: RouteObject = {path: "main",element: <MainLayout />,children: [// v6重定向用Navigate标签定义跳转{path: "",element: <Navigate to="list" replace />,},{path: "list",element: (<KeepAlive name="main-list"><MainList /></KeepAlive>),},{path: "detail",element: <MainDetail />,},],
};
export default mainRoutes;
5. ./router/userRoutes.tsx
import type { RouteObject } from "react-router";
import { lazy } from "react";const UserLayout = lazy(() => import("@/pages/User/Layout"));const UserInfo = lazy(() => import("@/pages/User/UserInfo"));/*** 用户信息模块路由*/
const userRoutes: RouteObject = {path: "user",element: <UserLayout />,children: [{path: "info",element: <UserInfo />,},],
};export default userRoutes;
6. Layout.tsx
import { Outlet } from "react-router-dom";const Layout = () => {return <Outlet />;
};export default Layout;相关文章:
React H5设置企业级v6版本路由的配置
路由配置是项目开发的必要一环,尤其是目前流行SPA,下面看看如何使用v6版本路由进行合理的H5路由配置 一、基本页面结构(目录根据开发要求建,下面仅用于展示配置路由) 二、具体文件实现 1. index.tsx import React f…...
【微信小程序】全局配置
1. 全局配置文件及常用的配置项 2.window (1).小程序窗口的组成部分 (2). 了解 window 节点常用的配置项 (3). 设置导航栏的标题 (4). 设置导航栏的背景色 (5). 设置导航栏的标题颜色 (6). 全局开启下拉刷新功能 (7). 设置下拉刷新时窗口的背景色 (8).设置下拉刷新时 loading …...
25届秋招网络安全面试资料库
吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…...
Adobe Dimension DN v4.0.2 解锁版下载安装教程 (专业的三维3D建模工具)
前言 Adobe Dimension(简称DN)是一款3D设计软件,三维合成和渲染工具,2D平面的二维转为3D立体的三维合成工具,用于3Dmax\C4D\MAYA等三维软件生成的效果图,在3D场景中排列对象、图形和光照。3D应用程序使用的…...
Python中*args 和 **kwargs作参数时有什么区别
*args 和 **kwargs 是 Python 函数定义中用于处理可变数量的参数的语法,初学者对于二者总是傻傻区分不了,今天我们就来详细解读一下这两个在参数传递时有什么不同。 首先要明白单个星号可以解包元组或者列表,两个星号可以解包字典。如&#…...
[CSS3]2D与3D变换技术详解
文章目录 2D变换(2D Transform)3D变换(3D Transform)结语 CSS3中的2D变换与3D变换是指通过transform属性对HTML元素进行几何操作,使其在二维或三维空间中进行移动、旋转、缩放和倾斜等变换。这些变换为前端开发者提供了…...
大恒相机通过Line2或Line3直接给出3.3V触发,形成分时曝光
大恒相机通过Line2或Line3直接给出3.3V触发,形成分时曝光 一、分时曝光需求二、3.3V信号分时曝光设计 写在前面 上班了,没多少时间再去精度论文了,大多是项目上的事情。 一、分时曝光需求 一般的12V光源通过光源控制器与大恒相机Line1线连接…...
electronjs实现打开的网页密码自动保存
在 Electron 中实现自动保存网页密码的功能涉及到几个步骤,以下是一个基本的实现思路: 1. 监听登录事件 首先,你需要监听用户的登录事件。当用户在一个网页上登录后,通常会有一个 POST 请求发送到服务器验证凭据。你可以监听这个…...
观测云的自动化监控:CRD 资源与自动发现
在云原生技术快速发展的今天,Kubernetes已成为企业容器化应用的中心舞台。随着应用的规模化和动态化,传统的监控方法已经难以满足需求。自动化监控,以其高效性和准确性,成为云原生监控的新趋势。观测云平台通过与Kubernetes的深度…...
九、OpenCVSharp 中的图像形态学操作
文章目录 简介一、腐蚀1. 腐蚀的原理和数学定义2. 结构元素的形状和大小选择3. 腐蚀操作的代码实现和效果展示二、膨胀1. 膨胀的概念和作用2. 与腐蚀的对比和组合使用(如开运算、闭运算)三、开运算1. 开运算的定义和用途(去除小的明亮区域)2. 开运算在去除噪声和分离物体方…...
http和websocket
http和websocket是什么 网络通信的协议 区别 http: 只能客户端发送,服务端接收。 websocket: 客户端和服务端都可以发送和接收数据。 链接...
Go 语言错误处理
不管使用哪种语言,程序代码都可能包含各种错误,例如语法错误、逻辑错误、除 0 错误和文件缺失等。因此,每种编程语言都有处理错误的内置机制。 1. Go 程序中的错误 需要指出的是,错误有多种类型。语法错误通常是开发人员在编写代…...
LVS部分配置1
LVS nat服务器(作时间服务器) [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# yum -y install ntpdate [rootlocalhost ~]# ntpdate cn.ntp.org.cn [rootlocalhost ~]# which ntpdate [rootlocalhost…...
datax和datax-web打包成docker运行
概述 datax和datax-web从一台机器迁移到另一台时,要重新搭建一套运行环境,比较麻烦;打包成docker镜像后迁移就方便多了; 因为我的mysql版本是8,需要在datax的read和write中手动添加8的jdbc驱动 所以我先各自下载好了datax和data…...
命令行参数环境变量
目录 前言: 命令行参数: 现象: 这些参数的意义: 为什么要这么做? 这些事是谁做的呢? 环境变量 现象: 创建环境变量: 结合程序理解: 前言: 我们在前…...
『大模型笔记』WizardLM:使大型预训练语言模型能够遵循复杂的指令
WizardLM: Empowering Large Pre-Trained Language Models to Follow Complex Instructions 文章目录 一. WizardLM:使大型预训练语言模型能够遵循复杂的指令二. Evolve-Instruct(优化版)2.1. 概述2.2. 实施二. 参考文献WizardLM:使大型预训练语言模型能够遵循复杂的指令:…...
编程-设计模式 2:抽象工厂模式
设计模式 2:抽象工厂模式 定义与目的 定义:抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。目的:该模式的主要目的是解耦客户端代码与产品类之间的关系,并确保一…...
阿里云智能大数据演进
本文根据7月24日飞天发布时刻产品发布会、7月5日DataFunCon2024北京站:大数据大模型.双核时代实录整理而成,演讲信息如下: 演讲人:徐晟 阿里云研究员/计算平台产品负责人 主要内容: Overview - 阿里云大数据 AI 产品…...
Java面试题———Spring篇①
目录 一,谈谈你对SpringIOC的理解 二,Spring中有哪些依赖注入方式 三,你用过哪些Spring注解 四,SpringBean的作用域有几种 五,Spring中的bean线程安全吗 六,谈谈你对SpringAOP的理解 七,…...
4章10节:用R做数据重塑,变体函数应用详解和可视化的数据预处理介绍
数据重塑(Data Reshaping)是将数据从一种结构转换为另一种结构的过程,是清理、分析和可视化数据的重要步骤。R语言作为数据科学的强大工具,提供了许多包来帮助我们进行数据重塑,其中最常用的就是dplyr包。dplyr包以其简洁的语法和高效的操作速度著称,它不仅可以帮助我们进…...
如何安全升级Cura软件版本:从风险规避到价值创造的全流程指南
如何安全升级Cura软件版本:从风险规避到价值创造的全流程指南 【免费下载链接】Cura 3D printer / slicing GUI built on top of the Uranium framework 项目地址: https://gitcode.com/gh_mirrors/cu/Cura UltiMaker Cura作为全球最受欢迎的3D打印切片软件&…...
HunyuanVideo-Foley音效生成:支持SMPTE时间码对齐视频关键帧
HunyuanVideo-Foley音效生成:支持SMPTE时间码对齐视频关键帧 1. 产品概述 HunyuanVideo-Foley是一款专为影视后期制作设计的AI音效生成工具,其核心创新在于支持SMPTE时间码精确对齐视频关键帧。这意味着音效师可以基于视频时间轴上的特定帧,…...
Ollama + DeepSeek + 芋道框架 + SearXNG 本地联网搜索完整教程
1. 环境准备与检查 在开始之前,请确保你的环境满足以下条件: 1.1 硬件要求 内存:建议至少8GB可用内存(运行7B模型需要约4-6GB) 硬盘:DeepSeek模型文件约4-5GB空间 CPU/GPU:如有NVIDIA GPU可加速推理(可选) 1.2 软件要求 操作系统:Windows 10/11、macOS、Linux均可 …...
档案宝 档案管理系统怎么样?为什么企业选择他?
在当今信息化高速发展的时代,企业档案管理已经从传统的纸质化时代迈向了数字化、智能化的新阶段。随着企业规模的不断扩大和业务类型的日益复杂,档案管理面临着前所未有的挑战:档案数量激增、查找困难、存储空间紧张、安全隐患突出等问题严重…...
机械臂+点云相机实战:手眼标定全流程避坑指南(附PCL库代码)
机械臂与点云相机手眼标定实战:从原理到代码的完整避坑指南 在工业自动化与机器人应用领域,机械臂与3D视觉系统的协同作业已成为提升生产灵活性和智能化的关键技术。其中,手眼标定作为连接机械臂运动学与视觉感知的桥梁,其精度直接…...
Vision Transformers在密集预测任务中的创新应用与性能优化
1. Vision Transformers如何革新密集预测任务 第一次接触Vision Transformers(ViT)时,我完全被它的设计哲学震撼到了。传统的CNN在处理图像时,就像用固定大小的网格去观察世界,而ViT则像是一个拥有"全局视野"…...
如何快速将Blender模型导入Unreal Engine?免费Datasmith插件完整指南
如何快速将Blender模型导入Unreal Engine?免费Datasmith插件完整指南 【免费下载链接】bl_datasmith Blender addon to export UE4 Datasmith format 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith Blender Datasmith Export是一款开源免费的Bl…...
ConcurrentHashMap讲解
在 Java 并发编程中,ConcurrentHashMap 是高频使用的线程安全 Map 实现,也是面试中几乎必问的核心知识点。它完美解决了 HashMap 线程不安全、Hashtable 性能极差的痛点,在高并发场景下实现了安全与性能的平衡。本文将从设计背景、JDK1.7/JDK…...
终极指南:Fn与云原生生态的完美集成,如何与Istio、Prometheus等工具无缝协作
终极指南:Fn与云原生生态的完美集成,如何与Istio、Prometheus等工具无缝协作 【免费下载链接】fn The container native, cloud agnostic serverless platform. 项目地址: https://gitcode.com/gh_mirrors/fn/fn Fn是一款容器原生的无服务器平台&…...
单轴晶体中的偏振转换
摘要 当线偏振光聚焦并通过单轴晶体传播时,即使沿着光轴方向,不同的偏振分量之间也可能会发生复杂的转换。这种现象可以应用于例如产生涡旋光。以方解石晶体为例,这个用例在VirtualLab Fusion中证明了单轴晶体中的偏振转换。并且可以观察到…...
