springweb+vue前后端分离开发,集成部署

news2024/11/8 6:47:58

背景:

        在自己做测试的时候,由于需要项目和项目的前端页面使用同样接口访问,所以需要将前端代码部署到后端项目下。前端采用vue,后端采用springboot。

首先时建立一个vue项目,这个可以参照网上的案例,创建方式没有区别。创建号之后修改vue.config.js:

    主要时修改转发代理的路径target和文件访问路径 publicPath。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  publicPath: process.env.NODE_ENV === 'production' ? '/static' : '/',
  devServer: {
    //以上的ip和端口是我们本机的;下面为需要跨域的
    proxy: {
      '/': {
        ws: false,
        target: 'http://localhost:9998',
        changeOrigin: true,
        pathRewrite: {
          '/^': '/'
        }
      }
    }
  }
})

代理的target路径改为后端访问地址:target: 'http://localhost:9998',其中9998时我们后端springboot项目的端口

publicPath是打包成果物的访问路径,通过dist文件下的index.html就可以知道访问的路径。因为我们的成果物在后端都是放在static下面的。所以需要在打包时将publicPath设置为static。

然后构建:npm run build

找到项目下的dist:

然后新建一个springboot的web项目:

注意需要有以下两个依赖:

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

创建好项目之后,在resource下创建两个文件:static 和 templates

然后将前端打包的结果移动到static和templates下。其中ass、js、favico.ico放到static下方,index.html放到templates下:

然后添加静态代码的访问路径:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class SpringWebMvcConfig  implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
}

首页的访问路径:返回index表示访问index.html文件。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;


@Controller
public class IndexController {

    @GetMapping({"/", "/index", "index.html"})
    public String index(){
        return "index";   // 或 return index.html
    }

}

这样就可以通过http://localhost:9998直接访问到后端的页面了。

遇到的问题和修复:

1.js文件无法访问到。

原因:publicPath没有配置。

如果后端的代码没有配置上下文,则publictPath只需要配置为:

publicPath: process.env.NODE_ENV === 'production' ? '/static' : '/',

如果后端项目配置了上下文,则需要将 publicPath再加上上下文,例如,后端的上下文为:/test2,则配置为:

publicPath: process.env.NODE_ENV === 'production' ? '/test2/static' : '/',

这样就可以访问成功了。 

2. 想把前端文件单独集成到一个module里面。

可以新建一个module只存放前端文件。只要打包的时候将所有的包打入进去即可。然后再启动服务的模块 引用这个前端文件的module。

3.不想将文件分开放在static和templates文件夹下,相统一放在static下 。

      static目录是用来保存静态文件的目录, 比如JS, CSS样式, 图片等, 是不需要服务器进行数据绑定的页面,此文件下都是静态资源文件,最主要的一个特点,可以通过浏览器地址栏,直接访问;而templates文件夹下放置的为动态资源,文件夹下的所有页面都需要通过系统来进行调用,而不能直接通过网址来访问。

        thymeleaf默认会设置并访问templates下的静态资源文件。那么我们可以不使用thymeleaf模板访问thymeleaf目录下的文件吗?当然可以,springboot默认访问static,resources,public这些文件夹下的文件,而没有默认访问templates下的。所以我们需要在application中加上以下配置:

spring.resources.static-locations=classpath:/resources/,classpath:/static/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114630.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思维模型 巴纳姆效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。 1 巴纳姆效应的应用 1.1 “占卜者”的故事 1 遇到占卜师的汤姆 汤姆是一位年轻的上班族&#xff0c;他一直对自己的未来感到迷茫和困惑。有一天&#xff0c;他在一家神秘的占卜店里遇到…

Python处理PDF——PyMuPDF的安装与使用详解

​​​​​​​ 1、PyMuPDF简介 1. 介绍 在介绍PyMuPDF之前&#xff0c;先来了解一下MuPDF&#xff0c;从命名形式中就可以看出&#xff0c;PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种…

28 mysql 数据记录的 存储更新删除

前言 前面 我们探讨了 索引记录的 新增, 更新, 删除 这里 我们来看一下 mysql 的核心数据记录的 新增更新删除 这里 来看一下 增删改 的相关实现 数据记录 和 索引记录 的处理方式是一致的 mysql 数据记录的存储 新增部分参见 自增长主键的实现 以及 记录的插入 mysql…

解决提交到App Store时的ITMS-90478和ITMS-90062错误

目录 引言 正文 1. 什么是ITMS-90478和ITMS-90062错误&#xff1f; 2. 解决方法 2.1 确定当前的版本号和构建号 2.2 递增版本号和构建号 2.3 再次尝试提交应用 总结 参考资料 错误记录 摘要&#xff1a;本文为iOS技术博主分享&#xff0c;将详细介绍解决提交应用到App…

QCustomPlot添加标题头

1 效果图 2 代码 is2Label QString("add title layout element");// add title layout element:ui->customplot->plotLayout()->insertRow(0);ui->customplot->plotLayout()->addElement(0, 0, new QCPTextElement(ui->customplot, xAxis2Lab…

设备巡检管理系统有什么用?企业如何提高生产效率和生产安全?

在当今工业生产领域&#xff0c;设备巡检的重要性不言而喻。然而&#xff0c;传统巡检方式存在的诸多问题&#xff0c;如数据不规范、漏检误检等&#xff0c;严重制约了企业生产效率和产品质量。为解决这一问题&#xff0c;我们推出了一款设备巡检管理系统——“的修”工单管理…

宝塔Nginx配置反向代理后如何配置跨域?

直接将 27行更换成如下配置即可 上图有示例 if ( $static_fileAUWz2fmi 0 ){add_header Cache-Control no-cache;add_header Access-Control-Allow-Origin "$http_origin";add_header Access-Control-Allow-Methods GET, POST, PUT, DELETE, OPTIONS;add_header Acc…

ASEMI肖特基二极管MBR10100CT参数,MBR10100CT封装

编辑-Z MBR10100CT参数描述&#xff1a; 型号&#xff1a;MBR10100CT 最大重复峰值反向电压VRRM&#xff1a;100V 最大RMS电压VRMS&#xff1a;70V 最大直流阻断电压VDC&#xff1a;100V 最大平均正向电流IF&#xff1a;10A 峰值正向浪涌电流IFSM&#xff1a;150A 最大…

使用java代码调用超融合登录接口,跟着敲就完事,官方文档也没有的资源~

一、准备工作 接口地址&#xff1a; 获取公钥&#xff1a;/vapi/json/public_key 登录&#xff1a;/vapi/json/access/ticket 登陆接口和 API 调用说明&#xff1a; 这部分步骤均为官网文档&#xff0c;最后步骤则是本地测试用户列表接口 1、第一步&#xff1a;获取公钥 注意&…

Echarts自定义柱状图

目录 效果图 echarts官网找相似图 将柱状图引入html页面中 自定义柱状图 将不需要的属性删除 ​编辑 修改图形大小 grid 不显示x轴 ​编辑 不显示y轴线和相关刻度 ​编辑 y轴文字的颜色设置为自己想要的颜色 修改第一组柱子相关样式&#xff08;条状&#xff09; …

Richard Stallman 正在与癌症作战

导读为了纪念 GNU 项目成立 40 周年&#xff0c;自由软件基金会&#xff08;FSF&#xff09;已计划在 10 月 1 日&#xff08;即GNU 40&#xff09;为家庭、学生以及美国的其他人群组织一场黑客马拉松活动。 活动之前&#xff0c;GNU 项目于 9 月 27 日迎来了 40 岁生日&#…

GraalVM入门教程

GraalVM入门教程 GraalVM是什么几个名词介绍native-imagegu 基础环境搭建linux下载GraalVM配置环境变量下载安装AOT编译器 native-image安装gcc、glibc-devel 与 zlib-devel下载maven并配置环境变量 windows下载GraalVM配置环境变量下载安装AOT编译器 native-image下载配置wind…

阿里云服务器的购买方式有哪些?哪些实例规格的云服务器价格相对便宜一点?

对于还没购买过阿里云服务器的用户来说&#xff0c;如何购买阿里云服务器以及现在购买哪些实例规格的云服务器价格比较便宜是用户比较关心的&#xff0c;购买阿里云服务器的方式主要有四种&#xff0c;而目前价格比较便宜的云服务器实例规格有轻量应用服务器和和经济型、通用算…

【ROS 2 基础-常用工具】-6 Rviz基础使用

所有内容请查看&#xff1a;博客学习目录_Howe_xixi的博客-CSDN博客

图形学--shading着色

概念&#xff1a;对不同物体应用不同材质 llumination shading着色 Blinn-Phong reflectance model Diffuse Reflection 漫反射 光打到了shading point上然后光线四面八方均匀散射 光源会根据光源传播的距离进行一定的能量衰减 按球的表面积来算&#xff0c;吸收的能量和光…

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测 目录 分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入…

Gradio的重要函数以及一些代码示例学习(一)

1 重要函数解析 1.1 Interface()类 参考&#xff1a; interface 最常用的基础模块构成。 应用界面&#xff1a;gr.Interface(简易场景), gr.Blocks(定制化场景)输入输出&#xff1a;gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.…

AI-新人类电商人的AI课,用世界先进的AI帮助电商降本增效

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/88448518 比如用语言模型写短视频文案、脚本&#xff0c;用生图模型做场景、拍摄、换装&#xff0c;用数字人做直播短视频 AI电商课程目录 注意&#xff1a;由于AI发展太快&#xff0c;新内容可能不在…

如何提升多个微信个人号管理效率?

一、管理多个微信个人号 微信扫码即可登录到系统&#xff0c;支持登录多个账号&#xff0c;可以聚合聊天&#xff0c;设置快捷回复语&#xff0c;提高回复的效率&#xff0c;不用来回切换界面&#xff0c;减少封号的风险。 二、监管管理多个账号 微信登陆在系统&#xff0c;所…

ECharta雷达图 样式调整

预期效果&#xff1a; <template><div id"operationalRisk-radar-chart" class"h-290 w-385"></div> </template><script>export default {name: radarChart} </script> <script setup>import { onMounted, r…