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

RuoYi前后端分离框架将前端dist资源集成到Jar包中独立部署

一、背景

.NET体系下通常采用服务端渲染(如Razor Pages)或直接包含前端资源,而Java Spring Boot项目虽支持静态资源打包,但Vue CLI工程需要独立的构建流程。主管要求将编译后的Vue工程直接嵌入JAR包中方便维护,本人不推荐这样,原因有三:

  • 第一、Vue CLI需要npm run build生成dist,而Java项目通过Maven/Gradle打包,二者生命周期不同步;其次前端每次修改需重新构建并复制到resources/static,破坏了前端热更新优势
  • 第二、前端每次修改需重新构建并复制到resources/static,破坏了前端热更新优势。
  • 第三、强制Java开发者处理前端构建,违背前后端分离架构原则。

独立部署前端,通过Nginx反向代理解决跨域,保持技术栈自治性,才是正途。

二、集成过程

项目采用RuoYi前后端分离框架搭建,版本为3.8.9。将ruoyi-ui前端工程编译打包后的dist目录集成到Jar包中,主要分为前端和后端两部分工作,话不多说,直接开干。

1.后端工程修改

后端工程的修改主要涉及三个地方:第一个是添加模版引擎的依赖并配置,第二个是静态资源注册映射;第三是鉴权拦截器放行静态资源的访问。

  • 添加模版引擎依赖主要是为了支持渲染dist目录的前端资源,需要引用与springboot版本匹配的依赖,如下:
            <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
    
    # thymeleaf配置
    spring:thymeleaf:prefix: classpath:/dist/mode: HTMLencoding: UTF-8cache: false

  • 修改ResourcesConfig类,注册静态资源(registry.addResourceHandler("/static/**").addResourceLocations("classpath:/dist/static/"))和添加视图控制器(

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/index").setViewName("index.html");
        registry.addViewController("/").setViewName("index.html");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }),完整代码如下:

    package com.book.framework.config;import com.book.common.config.RuoYiConfig;
    import com.book.common.constant.Constants;
    import com.book.framework.interceptor.RepeatSubmitInterceptor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    
http://www.xdnf.cn/news/692839.html

相关文章:

  • 考研系列-操作系统:第二章、进程与线程
  • Java垃圾回收器全面解析:原理、参数、对比与实战调优
  • 用QT写一个车速表
  • 台式电脑CPU天梯图_2025年台式电脑CPU天梯图
  • PortSwigger-03-点击劫持
  • ASP.NET Core OData 实践——Lesson6使用Action(C#)
  • 扩展摩尔投票法:找出出现次数超过 n/3 的元素
  • 《汇编语言》第11章 标志寄存器
  • LiveNVR :实现非国标流转国标流的全方位解决方案
  • 嵌入式自学第三十天(5.28)
  • Python |GIF 解析与构建(4):快速量化压缩256色算法
  • 关于uv 工具的使用总结(uv,conda,pip什么关系)
  • 在 MATLAB 2015a 中如何调用 Python
  • Spring Boot 读取.env文件获取配置
  • 金融全业务场景的系统分层与微服务域架构切分
  • 2025-05-28 Python-List-二分法
  • 实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.26~4.27 R语言解题
  • 【HTML-14】HTML 列表:从基础到高级的完整指南
  • 从SEO到GEO:搜索范式迁移的三大断层
  • 算法分析·回溯法
  • JAX-WS 返回值<return>标签怎么修改
  • 植被监测新范式!Python驱动机器学习反演NDVI/LAI关键技术解析
  • Qwen3大模型本地部署及Python调用指南
  • 数据库管理-第330期 数据库国产化可以顺便做的事情(20250528)
  • SpringBoot使用ffmpeg实现视频压缩
  • 大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4)
  • 服务器开机自启动服务
  • css设置动态数值:clamp函数
  • Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面(三):实现暗黑模式主题切换
  • kubernate解决 “cni0“ already has an IP address different from 10.244.0.1/24问题