create react app 项目部署在Spring(Tomcat)项目中
网上看了许多,大多数都是nginx做成静态项目,但是这样局限性太多,与Web项目相比许多服务端想做的验证都很麻烦,于是开始了艰难的探索之路,终于在不经意间试出来了,一把辛酸。。。
正常的打包就不说了。至于package.json里面这个hompage的参数,无所谓,最后没有用到。项目用的库就是这些,react-router4,新的路由~

看下打包出来的项目: 相比一下其他方式(做后台出家的,前端那一堆复杂的打包方法没用过~)大同小异,直接使用脚手架确实方便,
改了下生成js的名字,生成的每次都要加几个随机的字符。

首先看下路由,就是这样

接下来,讲重点!!
Spring的@RequestMapping与Reat-Router4路由结合,这里也是最蛋疼的地方。
①如果是想要返回页面这种,比如{indexUrl},实际值是/wechat/index,
那么在Spring里面,RequestMapping 要一样!要一样!要一样!说3遍

什么,你说路径里包含了项目的名字,比如这个项目叫 health ,
那你就等着打开 http://localhost:8080/health/wechat/index 的时候GG吧,
赶紧拿nginx做个反向代理,反正你访问的路径只能是 http://{nginx配置的域名}/wechat/index,
相当于就是说的根路径,跟拿nginx做静态服务器的那种一样,要根目录访问。这样一来,React-router的路由才和你重叠了,
感觉就像写CSS欺骗人一样,明明这2货没啥联系,八竿子挨不着,结果实际的显示效果这2人竟然合体了......
这个时候返回页面就交给Spring了,把打包的html改成jsp,jsp哟,这下想往页面里丢什么参数都好办了

然后呢,然后就没有了。接下来的路由管理就交给React-Router4了,/add 和 /submit 现在都是由路由来响应了,Spring里面就没有RequestMapping了。
当然,你应该知道通过React-Router过去的页面,点击浏览器的刷新是要404的,这个就不解释了。
②实际项目中也还是会有通过浏览器路径跳转的,这个时候也有些蛋疼的时候,比如注册页面完成跳转到index页面。
那么只好写多个路由打包了...这个有点蛋疼,把需要额外@RequestMapping返回的页面,同上面的方式打包
打个包
又打个包
③接口,这个加个跨域的处理就行~

create react app 项目部署在Spring(Tomcat)项目中的更多相关文章
- 深入 Create React App 核心概念
本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...
- 在 .NET Core 5 中集成 Create React app
翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...
- 使用create react app教程
This project was bootstrapped with Create React App. Below you will find some information on how to ...
- 如何扩展 Create React App 的 Webpack 配置
如何扩展 Create React App 的 Webpack 配置 原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...
- tap news:week5 0.0 create react app
参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...
- 多个springboot项目部署在同一tomcat上,出现jmx错误
多个springboot项目部署在同一tomcat上,出现jmx错误 原因:因为jmx某些东西重复,禁用jmx就可以了 endpoints.jmx.unique-names=true
- 【记录】Spring项目转化为Spring Web项目
前言 在将Spring项目转化为Spring Mvc项目时出现了点问题,总是无法成功部署,查阅资料也并没有找到一个完美的解决方案,最后是参考在idea中创建maven web app项目后的目录才成功 ...
- Spring Boot项目部署到外部Tomcat服务器
2017年04月27日 23:33:52 阅读数:7542 前言 Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中, ...
- Idea+maven+tomcat部署第一个tomcat项目
IDEA创建Maven项目及部署发布,IDEA配置Tomcat,创建java源文件夹. 此教程适合刚刚使用IDEA的新手. 工具/原料 IntelliJ IDEA 2016.3.4 apache- ...
随机推荐
- 使用mpvue开发微信小程序
更多内容请查看 我的新博客 地址 : 前言 16年小程序刚出来的时候,就准备花点时间去学学.无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖. 直到上周,终于有一个小程 ...
- nginx flv点播服务器搭建
首先选用Nginx+Nginx-rtmp-module作为点播服务器,安装文章:https://www.atlantic.NET/community/howto/install-rtmp-ubuntu ...
- 最优Django环境配置
2 最优Django环境配置 本章描述了我们认为对于中等和高级Django使用者来说最优的本地环境配置 2.1 统一使用相同的数据库引擎 一个常见的开发者错误是在本地开发环境中使用SQLite3,而在 ...
- Entity Framework分页扩展
Entity Framework分页在我初入门时总是困扰这我,无论是SQL分页还是Entity Framework的分页,总是显得那么麻烦,因此对于Entity Framework单独封装了分页. 一 ...
- linux定时清理数据库过期记录
cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start//没打开的话首先要打开. /sbin/service cr ...
- Nodejs http-proxy代理实战应用
var https = require('https'); var express = require('express'); var app = express() var http = requi ...
- BigDecimal常用的加减乘除算法、比较大小、保存两位小数点
项目中涉及到了BigDecimal的加.减.乘.比较大小.精确度的问题.所以在此总结一下,方便以后复习. //加法 BigDecimal coins = new BigDecimal("0& ...
- python flask中的代码约定
在Python社区中有许多关于代码风格的约定.如果你写过一段时间Python了,那么也许对此已经有些了解. 我会简单介绍一下,同时给你一些URL链接,从中你可以找到关于这个话题的详细信息. 让我们提出 ...
- mysql 关于表与字段的增删改查操作
1.mysql 命令登陆 形式: mysql -u用户名 -p密码 mysql -uroot -proot 2.mysql 显示数据库 形式: show databases; 3.mysql 进入某一 ...
- 全文检索-Lucene.net
Lucene.net是Lucene的.net移植版本,在较早之前是比较受欢迎的一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎. ...