当前位置: 首页 > news >正文

vue、react部署项目的 hashRouter 和 historyRouter模式

Vue 项目

使用 hashRouter

如果你使用的是 hashRouter,通常不需要修改 base,因为 hashRouter 使用 URL 的哈希部分来管理路由,这部分不会被服务器处理。你只需要确保 publicPath 设置正确即可。

使用 historyRouter

如果你使用的是 historyRouter 并且将应用程序部署到非根路径(例如 /subpath),你需要在 Vue Router 配置中设置 base,并且需要在服务器配置中进行相应的调整。

修改 Vue Router 配置

src/router/index.js 中设置 base

import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/views/Home.vue';Vue.use(Router);export default new Router({mode: 'history',base: '/subpath',routes: [{path: '/',name: 'home',component: Home,},// 其他路由],
});
修改 vue.config.js

确保 publicPath 设置为 /subpath

const { defineConfig } = require('@vue/cli-service');// 获取命令行参数
const args = process.argv.slice(2);
let useLocalIp = false;
args.forEach((arg) => {if (arg.includes('ip')) {useLocalIp = true;}
});module.exports = defineConfig({transpileDependencies: true,publicPath: process.env.NODE_ENV === 'production' ? '/subpath/' : '/',outputDir: 'dist',assetsDir: 'static',indexPath: 'index.html',filenameHashing: true,pages: {index: {entry: 'src/main.js',template: 'public/index.html',filename: 'index.html',title: 'My Demo',chunks: ['chunk-vendors', 'chunk-common', 'index'],},},devServer: {host: useLocalIp ? '192.167.97.207' : 'localhost',port: 8085,// https: false,proxy: null,},
});
修改 Nginx 配置

如果你使用的是 Nginx,需要在 Nginx 配置中添加对 historyRouter 的支持:

server {listen 80;server_name yourdomain.com;location /subpath/ {root /path/to/your/dist;try_files $uri $uri/ /subpath/index.html;}
}

React 项目

使用 hashRouter

如果你使用的是 hashRouter,不需要修改 base,只需要确保 homepage 设置正确即可。

修改 package.json

package.json 文件中添加 homepage 字段:

{"name": "your-app-name","version": "0.1.0","private": true,"homepage": "/subpath","dependencies": {// 你的依赖项},"scripts": {"start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"}
}
使用 HashRouter

在你的 React 应用中,使用 HashRouter

import React from 'react';
import ReactDOM from 'react-dom';
import { HashRouter as Router } from 'react-router-dom';
import App from './App';ReactDOM.render(<Router><App /></Router>,document.getElementById('root')
);
使用 historyRouter

如果你使用的是 historyRouter 并且将应用程序部署到非根路径(例如 /subpath),你需要在 React Router 配置中设置 basename,并且需要在服务器配置中进行相应的调整。

修改 package.json

package.json 文件中添加 homepage 字段:

{"name": "your-app-name","version": "0.1.0","private": true,"homepage": "/subpath","dependencies": {// 你的依赖项},"scripts": {"start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"}
}
使用 BrowserRouter 并设置 basename

在你的 React 应用中,使用 BrowserRouter 并设置 basename

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './App';ReactDOM.render(<Router basename="/subpath"><App /></Router>,document.getElementById('root')
);
修改 Nginx 配置

如果你使用的是 Nginx,需要在 Nginx 配置中添加对 historyRouter 的支持:

server {listen 80;server_name yourdomain.com;location /subpath/ {root /path/to/your/build;try_files $uri $uri/ /subpath/index.html;}
}

通过以上步骤,你可以将 Vue 和 React 应用部署到非根路径,并确保路由正常工作。

React 默认使用的打包器是 Webpack。

使用vite

修改 vite.config.js

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';export default defineConfig({base: '/subpath/',plugins: [react()],server: {host: '0.0.0.0',port: 3000,},build: {outDir: 'dist',assetsDir: 'static',},
});

相关文章:

vue、react部署项目的 hashRouter 和 historyRouter模式

Vue 项目 使用 hashRouter 如果你使用的是 hashRouter&#xff0c;通常不需要修改 base&#xff0c;因为 hashRouter 使用 URL 的哈希部分来管理路由&#xff0c;这部分不会被服务器处理。你只需要确保 publicPath 设置正确即可。 使用 historyRouter 如果你使用的是 histo…...

Qt 实现抽屉效果

1、实现效果和UI设计界面 2、工程目录 3、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QToolButton> #include <QPushButton> #include <vector> using namespace std;QT_BEGIN_NAMESPACE namespace…...

windows上启动Kafka

官网下载 如&#xff1a;kafka_2.13-2.4.0.tgz 新版集成了Zookeeper ,无需另行下载 解压 至D:\Kafka\kafka_2.13-2.4.0 下 配置Kafka&#xff08;可跳过&#xff09; Zookeeper配置 kafka\config\zookeeper.properties下修改dataDir路径(Zookeeper数据目录)dataDirD:\\Program…...

贪心系列专题篇三

目录 单调递增的数字 坏了的计算器 合并区间 无重叠区间 用最少数量的箭 声明&#xff1a;接下来主要使用贪心法来解决问题&#xff01;&#xff01;&#xff01; 单调递增的数字 题目 思路 如果我们遍历整个数组&#xff0c;然后对每个数k从[k,0]依次遍历寻找“单调递…...

Java中两个集合取差集

Java中两个集合取差集 说明: 集合A ListA: search archive relation test 集合B ListB: search search-gejunhao archive-gejunhao archive system 需求: 现在要取存在于A但是不存在B中的元素 test 该如何实现 思路: 在Java中&#xff0c;如果你想要从一个集合&#xff…...

flask mysql数据迁移

flask 数据迁移 在Flask中使用数据库迁移&#xff0c;通常我们会结合SQLAlchemy和Alembic来管理数据库的迁移。以下是一个基本的数据迁移流程&#xff1a; 安装Flask-Migrate&#xff1a; pip install Flask-Migrate 配置Flask应用和数据库&#xff1a; from flask import Fla…...

Kylin系列(一)入门

Kylin系列(一)入门 目录 简介Kylin的特点安装与配置 环境要求安装步骤 基本概念 Cube维度与度量 Kylin的基本操作 数据准备Cube设计Cube构建查询与分析 最佳实践常见问题总结 简介 Apache Kylin 是一个开源的分布式分析引擎&#xff0c;提供 SQL 查询接口及多维分析&#x…...

pmp学习交流组队~

首先&#xff0c;来看看什么是PMP PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会&#xff08;Project Management Institute(PMI)发起的&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。 pmp备考攻略本人推荐的参考资料比较多&#xff0…...

公司常用的监控软件有哪些?2024年六大公司监控软件良心推荐!

在现代企业管理中&#xff0c;监控软件不仅可以帮助提高员工生产力&#xff0c;还可以确保企业数据的安全和保护。小编分享六款公司监控软件&#xff0c;能够满足不同企业的需求&#xff0c;提升管理效率和信息安全。 一、值得推荐的监控软件 1. 固信软件 固信软件https://ww…...

DNS解析异常--排查验证

目录 1.脚本 2.解析结果 3.脚本详解 1.脚本 for j in {1..100}; do for i in $domain1 $domain2; do echo $i; dig $i $dns服务器1 short; sleep 1; dig $i $dns服务器2 short ; sleep 1; done; sleep 2; done; 2.解析结果 ## 域名的解析实际IP: ## $domain1 $IP1 ## $do…...

OpenCV库学习之Canny边缘检测模块

OpenCV库学习之Canny边缘检测模块 一、简介 Canny边缘检测是OpenCV库中一个非常著名的边缘检测算法模块&#xff0c;由John F. Canny在1986年提出。该算法通过多个步骤来确定图像中的边缘&#xff0c;包括噪声降低、梯度计算、非极大值抑制、双阈值检测和边缘跟踪等。Canny边缘…...

Python 教程(七):match...case 模式匹配

目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表 Python教程&#xff08;一&#xff09;&#xff1a;环境搭建及PyCharm安装Python 教程&#xff08;二&#xff09;&…...

Python小项目实战:杨辉三角

题目要求 编写python程序&#xff0c;实现输入正整数n&#xff0c;输出一个n层的杨辉三角&#xff0c;要求打印显示的时候左右对称 比如&#xff0c;输入7&#xff0c;返回结果如图所示 解决思路 generate_pascals_triangle(n) 函数: 生成一个包含 n 层的杨辉三角。 初始化第…...

java注解与反射(非常详细, 带有很多样例)

下面是详细地讲解 Java 中的注解与反射&#xff0c;并提供了很多的示例来帮助理解。 Java 注解&#xff08;Annotations&#xff09; 1. 注解的基本概念 注解&#xff08;Annotation&#xff09;是 Java 5 引入的一种用于为代码元素&#xff08;类、方法、字段、参数等&…...

模拟实现短信登录功能 (session 和 Redis 两种代码实例) 带前端演示

目录 整体流程 发送验证码 短信验证码登录、注册 校验登录状态 基于 session 实现登录 实现发送短信验证码功能 1. 前端发送请求 2. 后端处理请求 3. 演示 实现登录功能 1. 前端发送请求 2. 后端处理请求 校验登录状态 1. 登录拦截器 2. 注册拦截器 3. 登录完整…...

C# Parallel设置最大并发度

背景 以前用Parallel都是直接用&#xff0c;今天在处理pdf时发现不是很快&#xff0c;特别是有时居然卡死了&#xff0c;异常是有处理的&#xff0c;但没有爆出来&#xff0c;不知道问题在哪。 老老实实不用多线程&#xff0c;一个多小时觉得还是太累。 用的话&#xff0c;部…...

【java】力扣 反转字符串中的单词

目录 题目描述题目描述思路代码 题目描述 151.反转字符串中的单词 题目描述 思路 主要是利用快慢指针和字符串的截取 还要了解去掉首尾空格的函数是trim 那s"the sky is blue"举例 这个例子是没有首尾空格的&#xff0c;以防万一&#xff0c;我们不管有没有&#…...

科学设计程序员面试内容,破解“八股文”之弊

“八股文”在实际工作中是助力、阻力还是空谈&#xff1f; 作为现在各类大中小企业面试程序员时的必问内容&#xff0c;“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢&#xff1f;有IT人士不禁发出疑问&#xff1a;程序员面试考…...

蓝牙BlueZ验证使用记录

最近使用的一款AICSemi AIC8800D8芯片做的WiFiBT二合一模组&#xff0c;该模组WiFi使用SDIO通信&#xff0c;BT使用UART通信&#xff0c;供应商丢了一份驱动&#xff0c;包含了三个目录&#xff1a;aic8800_bsp、aic8800_fdrv和aic8800_btlpm&#xff0c;而蓝牙部分提供了lbh_s…...

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布&#xff0c;但是还没有测试&#xff0c;本节进行测试&#xff0c;测试之前需要知道一件事&#xff0c;上位机也就是开发板一般不做可视化用&#xff0c;因…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...