java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Vue3打包部署SpringBoot3

Vue3打包部署到SpringBoot3的详细步骤

作者:2403_89965163

在Vue3项目中,打包指令主要用于将项目编译成可以在生产环境中部署的静态文件,这篇文章主要介绍了Vue3打包部署到SpringBoot3的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

Vue3项目

1.先在vite.config.js中添加 base: './'

export default defineConfig({
  base: './',
  plugins: [
    vue(),
    vueDevTools(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

在vite官网中是这样说的:

简单来说就是:使用相对路径,可以让项目能在任意路径下部署,无需提前固定公共基础路径,解决了部署环境不确定的问题。

具体可以通过Vite官网来查看:构建生产版本 | Vite 官方中文文档

2.如果设置了用同一接口前缀用来修改请求路径的端口号的话,要进行删除或注释

const baseUrl='/api';
const instance = axios.create({baseURL:baseUrl});
//这里我设置了统一接口前缀/api,可以直接注释了
server: {
    proxy: {
      '/api': {//处理以api为前缀的请求    
        target: 'http://localhost:8081',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }

这是因为在Vite的官网上说了,这么一句话,Configure custom proxy rules for the dev server,他翻译过来就是:为开发服务器配置自定义代理规则。

server.proxy 属于 开发服务器(dev server) 的配置项,用于 “在开发环境下配置代理规则,以解决跨域请求问题”。所以当不删除的话,修改端口不起作用,但是api却加再了请求路径上,导致,访问不到,而报404.

具体可看Vite官网的这个位置:https://vite.dev/config/server-options.html#server-proxy

3.配置路由模式

import { createRouter, createWebHashHistory } from 'vue-router'

建议使用Hash模式,因为:他不需要再服务器层面上进行任何特殊处理。

虽然hash模式访问请求,输入URL会在URL中加入#,但是

这里的关键是:# 及其后面的内容(如 #/sign)不会被发送到服务器。服务器收到的请求始终是根路径 /,因此就能返回 index.html,使用了history模式的路由需要再SpringBoot上对每个页面的路径进行对应的配置,但是使用hash模式,在SpringBoot中只用配置/根路径

hash模式官网:https://router.vuejs.org/zh/guide/essentials/history-mode.html#Hash-%E6%A8%A1%E5%BC%8F

HTML5模式官网:

https://router.vuejs.org/zh/guide/essentials/history-mode.html#HTML5-%E6%A8%A1%E5%BC%8F

4.将vue打包

npm run build

打包完成后会生成dist文件夹

SpringBoot3项目

1.在pom.xml文件中添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.将vue打包的vite文件里面的文件整合到SpringBoot中

将ideax.html放到resources的templates下

其他的文件都放到static下

3.检查index.html

index.html的作用:index.html 是前端应用的唯一入口文件,所有页面的渲染、资源加载和路由跳转都依赖它来启动,是连接静态资源与浏览器运行环境的核心桥梁。

<script type="module" crossorigin src="./assets/index-6G-g-WH_.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-BgquJFG5.css" rel="external nofollow" >

在index.html中检查,访问js和css的文件路径是否正确,如果不正确,访问不到css或js,就会报出404错误

4.编写跳转控制器

作用:接受/根路径并跳转到index.html

@Controller
public class BasicController {
    @GetMapping("/")
    public String Index() {
        return "index";
    }
}

结合上述路由中hash模式的特点,# 及其后面的内容(如 #/sign)不会被发送到服务器,让前端的请求路径全都可以到index.html

5.401报错

如果出现401报错,就请仔细查看是否是自己的拦截器是否拦截了

"static/**",        //静态资源的路径
"/",        //访问index.html的根路径

"/index.html",     

或则也有可能是其他的路径被拦截,导致无法正常访问,而报出401

访问

因为我这里用的是hash模式的路由,所以访问时要在端口或域名后面加/#

http:localhost:端口号/#/path

我的这篇文章只能用作参考,具体问题,还要看具体情况

总结

到此这篇关于Vue3打包部署到SpringBoot3的文章就介绍到这了,更多相关Vue3打包部署SpringBoot3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文