当前位置: 首页 > 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;
    

相关文章:

  • 【HALCON】 深入解析 select_gray 算子
  • 紫光闪芯发布企业级E5200PCIe 5.0 企业级固态硬盘
  • 如何在python3.8环境中安装pytorch
  • 数据库-算法学习C++(入门)
  • RG3000网关构建5G LAN智慧工厂智能制造
  • OpenCV---Canny边缘检测
  • Flink 核心机制与源码剖析系列
  • day023-网络基础与OSI七层模型
  • SQLite软件架构与实现源代码浅析
  • Linux -- gdb/cgdb的认识和使用
  • 商旅平台排名:十大商旅服务平台解析
  • Linux中的进程控制(下)
  • Adminer
  • HackMyVM-Find
  • LeetCode 1871. 跳跃游戏 VII(中等)
  • 面试题——计算机网络:HTTP和HTTPS的区别?
  • C++异步通信-future学习
  • nt!MmMapViewInSystemCache函数分析PointerPte的填充
  • 使用Vue + Element Plus实现可多行编辑的分页表格
  • APL Photonics封面成果:KAUST用五边形激光腔刷新物理随机数生成极限——800Gb/s!
  • 怎么在欧美做网站推广/福州seo网站管理
  • 设计有关的网站/百度seo优化策略
  • 网站建设福州最好/网站怎么建设
  • 学校网站建设工作/厦门百度整站优化服务
  • 昆明网站搭建公司/百度关键词怎么优化
  • 做热图的在线网站/客源引流推广