前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React 项目路径添加指定的访问前缀 - SPA

React 项目路径添加指定的访问前缀 - SPA

作者头像
Jimmy_is_jimmy
发布2023-04-22 19:47:22
2K0
发布2023-04-22 19:47:22
举报
文章被收录于专栏:call_me_Rcall_me_R

前言

之前我们讨论了怎么在 Angular 项目路径添加指定的访问前缀,该项目针对 SPA 应用;当然,我们也讨论了 Next 项目路径添加指定的访问前缀,该项目是使用 React 框架完成的 MPA 应用。本文,我们讨论 ReactSPA 应用,怎么为该应用添加指定的访问前缀呢?

项目开发准备

这里我们使用了 creat-react-app 进行创建。

react 版本 ^18.2.0

我们将使用到其默认的命令行进行项目打包:

代码语言:javascript
复制
"build": "react-scripts build"

但是,我们更改下,打包到自定义的文件夹,名为 jimmy

代码语言:javascript
复制
"build": "react-scripts build && mv build jimmy"

这种打包的方法,能够方便笔者运行多个命令行输出不同的项目,而不是单一更改配置。读者也可以尝试下更改其配置信息输出打包文件

通过运行 npm run build 命令行,我们就会得到 jimmy 文件夹。嗯~ 有点超前,打包输出文件这步应该在部署项目之前打包!好了,我们先对项目进行更改~

更改项目开发前缀

项目中,我们使用的是 history 模式,所以,项目的路由方式如下:

代码语言:javascript
复制
import { BrowserRouter as Router, Route, Routes, Navigate} from 'react-router-dom';

function App() {
  return (
    <>
      <Router>
        <Routes>
          {/* 重定向 */}
          <Route path="/" element={<Navigate replace to="/admin" />} />
          <Route path='admin' element={<Home/>}/>
          {/* 页面找不到 */}
          <Route path="*" element={<NotFound/>}/>
        </Routes>
      </Router>
    </>
  );
}

export default App;

BrowserRouter 指的就是 history 模式。我们想项目在 /jimmy/ 的前缀内打开,我们需要对 Router 标签添加 basename 属性,如下:

代码语言:javascript
复制
<Router basename="/jimmy">
  // other code
</Router>

此时本地运行项目,可以看到效果如下:

留意 localhost:3000/jimmy/admin 链接。

题外话,页面效果中的代码如下:

代码语言:javascript
复制
import logo from '../logo.svg';
import { Button } from 'react-vant';
import HelloWorld from '../../../components/HelloWorld'

import { Link } from "react-router-dom";

function Home() {
  return (
    <div className="Home">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <Link to="/admin/login">登陆</Link>
        <HelloWorld />
        <Button type="danger">删除</Button>
      </header>
    </div>
  );
}

export default Home;

我们引入了 react vant,并且抽出了自定义的 HelloWorld 组件。

更改项目构建前缀

构建项目,我们对前缀的添加有如下的方法:

1. 添加 homepage

在项目的 package.json 文件中添加 homepage 字段,这里我们应该设置其值为 /jimmy/:

代码语言:javascript
复制
{
  "homepage": "/jimmy/"
}

2. 直接更改 script 命令行

如果你是在同个仓库里面,同份 package.json 维护多个应用,建议你在 package.jsonscripts 中更改,如下:

代码语言:javascript
复制
{
  "scripts": {
    "build": "PUBLIC_URL=/jimmy/ react-scripts build &amp;&amp; mv build jimmy"
  }
}

部署项目

运行 npm run build 打包后,我们会得到 jimmy 文件夹。我们将其上传到服务器上,并配置 nginx 的信息:

代码语言:javascript
复制
# react project - spa
location /jimmy/ {
  index index.html index.htm;
  try_files $uri $uri/ /jimmy/index.html;
}

进入线上项目,我们会看到如下效果:

刷新页面,页面也可以正常展示;如果 history 模式没有配置好,会出现刷新页面,内容丢失的情况

Thanks for reading.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 项目开发准备
  • 更改项目开发前缀
  • 更改项目构建前缀
  • 部署项目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档